diff options
Diffstat (limited to 'drivers/thermal/rcar_thermal.c')
| -rw-r--r-- | drivers/thermal/rcar_thermal.c | 29 | 
1 files changed, 14 insertions, 15 deletions
| diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c index 28f09199401..2cc5b6115e3 100644 --- a/drivers/thermal/rcar_thermal.c +++ b/drivers/thermal/rcar_thermal.c @@ -145,6 +145,7 @@ static int rcar_thermal_update_temp(struct rcar_thermal_priv *priv)  	struct device *dev = rcar_priv_to_dev(priv);  	int i;  	int ctemp, old, new; +	int ret = -EINVAL;  	mutex_lock(&priv->lock); @@ -174,7 +175,7 @@ static int rcar_thermal_update_temp(struct rcar_thermal_priv *priv)  	if (!ctemp) {  		dev_err(dev, "thermal sensor was broken\n"); -		return -EINVAL; +		goto err_out_unlock;  	}  	/* @@ -192,10 +193,10 @@ static int rcar_thermal_update_temp(struct rcar_thermal_priv *priv)  	dev_dbg(dev, "thermal%d  %d -> %d\n", priv->id, priv->ctemp, ctemp);  	priv->ctemp = ctemp; - +	ret = 0; +err_out_unlock:  	mutex_unlock(&priv->lock); - -	return 0; +	return ret;  }  static int rcar_thermal_get_temp(struct thermal_zone_device *zone, @@ -363,6 +364,7 @@ static int rcar_thermal_probe(struct platform_device *pdev)  	struct resource *res, *irq;  	int mres = 0;  	int i; +	int ret = -ENODEV;  	int idle = IDLE_INTERVAL;  	common = devm_kzalloc(dev, sizeof(*common), GFP_KERNEL); @@ -399,11 +401,9 @@ static int rcar_thermal_probe(struct platform_device *pdev)  		/*  		 * rcar_has_irq_support() will be enabled  		 */ -		common->base = devm_request_and_ioremap(dev, res); -		if (!common->base) { -			dev_err(dev, "Unable to ioremap thermal register\n"); -			return -ENOMEM; -		} +		common->base = devm_ioremap_resource(dev, res); +		if (IS_ERR(common->base)) +			return PTR_ERR(common->base);  		/* enable temperature comparation */  		rcar_thermal_common_write(common, ENR, 0x00030303); @@ -422,11 +422,9 @@ static int rcar_thermal_probe(struct platform_device *pdev)  			return -ENOMEM;  		} -		priv->base = devm_request_and_ioremap(dev, res); -		if (!priv->base) { -			dev_err(dev, "Unable to ioremap priv register\n"); -			return -ENOMEM; -		} +		priv->base = devm_ioremap_resource(dev, res); +		if (IS_ERR(priv->base)) +			return PTR_ERR(priv->base);  		priv->common = common;  		priv->id = i; @@ -441,6 +439,7 @@ static int rcar_thermal_probe(struct platform_device *pdev)  						idle);  		if (IS_ERR(priv->zone)) {  			dev_err(dev, "can't register thermal zone\n"); +			ret = PTR_ERR(priv->zone);  			goto error_unregister;  		} @@ -460,7 +459,7 @@ error_unregister:  	rcar_thermal_for_each_priv(priv, common)  		thermal_zone_device_unregister(priv->zone); -	return -ENODEV; +	return ret;  }  static int rcar_thermal_remove(struct platform_device *pdev) |