diff options
Diffstat (limited to 'drivers/hwmon/s3c-hwmon.c')
| -rw-r--r-- | drivers/hwmon/s3c-hwmon.c | 62 | 
1 files changed, 21 insertions, 41 deletions
diff --git a/drivers/hwmon/s3c-hwmon.c b/drivers/hwmon/s3c-hwmon.c index 05248f2d758..0674c13bbd4 100644 --- a/drivers/hwmon/s3c-hwmon.c +++ b/drivers/hwmon/s3c-hwmon.c @@ -22,7 +22,6 @@  #include <linux/module.h>  #include <linux/slab.h> -#include <linux/delay.h>  #include <linux/io.h>  #include <linux/init.h>  #include <linux/err.h> @@ -34,7 +33,7 @@  #include <linux/hwmon-sysfs.h>  #include <plat/adc.h> -#include <plat/hwmon.h> +#include <linux/platform_data/hwmon-s3c.h>  struct s3c_hwmon_attr {  	struct sensor_device_attribute	in; @@ -108,17 +107,14 @@ static ssize_t s3c_hwmon_show_raw(struct device *dev,  	return  (ret < 0) ? ret : snprintf(buf, PAGE_SIZE, "%d\n", ret);  } -#define DEF_ADC_ATTR(x)	\ -	static SENSOR_DEVICE_ATTR(adc##x##_raw, S_IRUGO, s3c_hwmon_show_raw, NULL, x) - -DEF_ADC_ATTR(0); -DEF_ADC_ATTR(1); -DEF_ADC_ATTR(2); -DEF_ADC_ATTR(3); -DEF_ADC_ATTR(4); -DEF_ADC_ATTR(5); -DEF_ADC_ATTR(6); -DEF_ADC_ATTR(7); +static SENSOR_DEVICE_ATTR(adc0_raw, S_IRUGO, s3c_hwmon_show_raw, NULL, 0); +static SENSOR_DEVICE_ATTR(adc1_raw, S_IRUGO, s3c_hwmon_show_raw, NULL, 1); +static SENSOR_DEVICE_ATTR(adc2_raw, S_IRUGO, s3c_hwmon_show_raw, NULL, 2); +static SENSOR_DEVICE_ATTR(adc3_raw, S_IRUGO, s3c_hwmon_show_raw, NULL, 3); +static SENSOR_DEVICE_ATTR(adc4_raw, S_IRUGO, s3c_hwmon_show_raw, NULL, 4); +static SENSOR_DEVICE_ATTR(adc5_raw, S_IRUGO, s3c_hwmon_show_raw, NULL, 5); +static SENSOR_DEVICE_ATTR(adc6_raw, S_IRUGO, s3c_hwmon_show_raw, NULL, 6); +static SENSOR_DEVICE_ATTR(adc7_raw, S_IRUGO, s3c_hwmon_show_raw, NULL, 7);  static struct attribute *s3c_hwmon_attrs[9] = {  	&sensor_dev_attr_adc0_raw.dev_attr.attr, @@ -169,7 +165,7 @@ static ssize_t s3c_hwmon_ch_show(struct device *dev,  {  	struct sensor_device_attribute *sen_attr = to_sensor_dev_attr(attr);  	struct s3c_hwmon *hwmon = platform_get_drvdata(to_platform_device(dev)); -	struct s3c_hwmon_pdata *pdata = dev->platform_data; +	struct s3c_hwmon_pdata *pdata = dev_get_platdata(dev);  	struct s3c_hwmon_chcfg *cfg;  	int ret; @@ -198,7 +194,7 @@ static ssize_t s3c_hwmon_label_show(struct device *dev,  				    char *buf)  {  	struct sensor_device_attribute *sen_attr = to_sensor_dev_attr(attr); -	struct s3c_hwmon_pdata *pdata = dev->platform_data; +	struct s3c_hwmon_pdata *pdata = dev_get_platdata(dev);  	struct s3c_hwmon_chcfg *cfg;  	cfg = pdata->in[sen_attr->index]; @@ -232,9 +228,9 @@ static int s3c_hwmon_create_attr(struct device *dev,  	attr = &attrs->in;  	attr->index = channel; +	sysfs_attr_init(&attr->dev_attr.attr);  	attr->dev_attr.attr.name  = attrs->in_name;  	attr->dev_attr.attr.mode  = S_IRUGO; -	attr->dev_attr.attr.owner = THIS_MODULE;  	attr->dev_attr.show = s3c_hwmon_ch_show;  	ret =  device_create_file(dev, &attr->dev_attr); @@ -250,9 +246,9 @@ static int s3c_hwmon_create_attr(struct device *dev,  		attr = &attrs->label;  		attr->index = channel; +		sysfs_attr_init(&attr->dev_attr.attr);  		attr->dev_attr.attr.name  = attrs->label_name;  		attr->dev_attr.attr.mode  = S_IRUGO; -		attr->dev_attr.attr.owner = THIS_MODULE;  		attr->dev_attr.show = s3c_hwmon_label_show;  		ret = device_create_file(dev, &attr->dev_attr); @@ -276,9 +272,9 @@ static void s3c_hwmon_remove_attr(struct device *dev,   * s3c_hwmon_probe - device probe entry.   * @dev: The device being probed.  */ -static int __devinit s3c_hwmon_probe(struct platform_device *dev) +static int s3c_hwmon_probe(struct platform_device *dev)  { -	struct s3c_hwmon_pdata *pdata = dev->dev.platform_data; +	struct s3c_hwmon_pdata *pdata = dev_get_platdata(&dev->dev);  	struct s3c_hwmon *hwmon;  	int ret = 0;  	int i; @@ -288,11 +284,9 @@ static int __devinit s3c_hwmon_probe(struct platform_device *dev)  		return -EINVAL;  	} -	hwmon = kzalloc(sizeof(struct s3c_hwmon), GFP_KERNEL); -	if (hwmon == NULL) { -		dev_err(&dev->dev, "no memory\n"); +	hwmon = devm_kzalloc(&dev->dev, sizeof(struct s3c_hwmon), GFP_KERNEL); +	if (hwmon == NULL)  		return -ENOMEM; -	}  	platform_set_drvdata(dev, hwmon); @@ -303,8 +297,7 @@ static int __devinit s3c_hwmon_probe(struct platform_device *dev)  	hwmon->client = s3c_adc_register(dev, NULL, NULL, 0);  	if (IS_ERR(hwmon->client)) {  		dev_err(&dev->dev, "cannot register adc\n"); -		ret = PTR_ERR(hwmon->client); -		goto err_mem; +		return PTR_ERR(hwmon->client);  	}  	/* add attributes for our adc devices. */ @@ -363,12 +356,10 @@ static int __devinit s3c_hwmon_probe(struct platform_device *dev)   err_registered:  	s3c_adc_release(hwmon->client); - err_mem: -	kfree(hwmon);  	return ret;  } -static int __devexit s3c_hwmon_remove(struct platform_device *dev) +static int s3c_hwmon_remove(struct platform_device *dev)  {  	struct s3c_hwmon *hwmon = platform_get_drvdata(dev);  	int i; @@ -390,21 +381,10 @@ static struct platform_driver s3c_hwmon_driver = {  		.owner		= THIS_MODULE,  	},  	.probe		= s3c_hwmon_probe, -	.remove		= __devexit_p(s3c_hwmon_remove), +	.remove		= s3c_hwmon_remove,  }; -static int __init s3c_hwmon_init(void) -{ -	return platform_driver_register(&s3c_hwmon_driver); -} - -static void __exit s3c_hwmon_exit(void) -{ -	platform_driver_unregister(&s3c_hwmon_driver); -} - -module_init(s3c_hwmon_init); -module_exit(s3c_hwmon_exit); +module_platform_driver(s3c_hwmon_driver);  MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>");  MODULE_DESCRIPTION("S3C ADC HWMon driver");  | 
