diff options
Diffstat (limited to 'drivers/hwmon/adcxx.c')
| -rw-r--r-- | drivers/hwmon/adcxx.c | 42 | 
1 files changed, 12 insertions, 30 deletions
diff --git a/drivers/hwmon/adcxx.c b/drivers/hwmon/adcxx.c index fbdc7655303..04c08c2f79b 100644 --- a/drivers/hwmon/adcxx.c +++ b/drivers/hwmon/adcxx.c @@ -62,7 +62,7 @@ static ssize_t adcxx_read(struct device *dev,  {  	struct spi_device *spi = to_spi_device(dev);  	struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); -	struct adcxx *adc = dev_get_drvdata(&spi->dev); +	struct adcxx *adc = spi_get_drvdata(spi);  	u8 tx_buf[2];  	u8 rx_buf[2];  	int status; @@ -105,7 +105,7 @@ static ssize_t adcxx_show_max(struct device *dev,  		struct device_attribute *devattr, char *buf)  {  	struct spi_device *spi = to_spi_device(dev); -	struct adcxx *adc = dev_get_drvdata(&spi->dev); +	struct adcxx *adc = spi_get_drvdata(spi);  	u32 reference;  	if (mutex_lock_interruptible(&adc->lock)) @@ -122,10 +122,10 @@ static ssize_t adcxx_set_max(struct device *dev,  	struct device_attribute *devattr, const char *buf, size_t count)  {  	struct spi_device *spi = to_spi_device(dev); -	struct adcxx *adc = dev_get_drvdata(&spi->dev); +	struct adcxx *adc = spi_get_drvdata(spi);  	unsigned long value; -	if (strict_strtoul(buf, 10, &value)) +	if (kstrtoul(buf, 10, &value))  		return -EINVAL;  	if (mutex_lock_interruptible(&adc->lock)) @@ -141,10 +141,7 @@ static ssize_t adcxx_set_max(struct device *dev,  static ssize_t adcxx_show_name(struct device *dev, struct device_attribute  			      *devattr, char *buf)  { -	struct spi_device *spi = to_spi_device(dev); -	struct adcxx *adc = dev_get_drvdata(&spi->dev); - -	return sprintf(buf, "adcxx%ds\n", adc->channels); +	return sprintf(buf, "%s\n", to_spi_device(dev)->modalias);  }  static struct sensor_device_attribute ad_input[] = { @@ -164,14 +161,14 @@ static struct sensor_device_attribute ad_input[] = {  /*----------------------------------------------------------------------*/ -static int __devinit adcxx_probe(struct spi_device *spi) +static int adcxx_probe(struct spi_device *spi)  {  	int channels = spi_get_device_id(spi)->driver_data;  	struct adcxx *adc;  	int status;  	int i; -	adc = kzalloc(sizeof *adc, GFP_KERNEL); +	adc = devm_kzalloc(&spi->dev, sizeof(*adc), GFP_KERNEL);  	if (!adc)  		return -ENOMEM; @@ -182,7 +179,7 @@ static int __devinit adcxx_probe(struct spi_device *spi)  	mutex_lock(&adc->lock); -	dev_set_drvdata(&spi->dev, adc); +	spi_set_drvdata(spi, adc);  	for (i = 0; i < 3 + adc->channels; i++) {  		status = device_create_file(&spi->dev, &ad_input[i].dev_attr); @@ -206,15 +203,13 @@ out_err:  	for (i--; i >= 0; i--)  		device_remove_file(&spi->dev, &ad_input[i].dev_attr); -	dev_set_drvdata(&spi->dev, NULL);  	mutex_unlock(&adc->lock); -	kfree(adc);  	return status;  } -static int __devexit adcxx_remove(struct spi_device *spi) +static int adcxx_remove(struct spi_device *spi)  { -	struct adcxx *adc = dev_get_drvdata(&spi->dev); +	struct adcxx *adc = spi_get_drvdata(spi);  	int i;  	mutex_lock(&adc->lock); @@ -222,9 +217,7 @@ static int __devexit adcxx_remove(struct spi_device *spi)  	for (i = 0; i < 3 + adc->channels; i++)  		device_remove_file(&spi->dev, &ad_input[i].dev_attr); -	dev_set_drvdata(&spi->dev, NULL);  	mutex_unlock(&adc->lock); -	kfree(adc);  	return 0;  } @@ -245,21 +238,10 @@ static struct spi_driver adcxx_driver = {  	},  	.id_table = adcxx_ids,  	.probe	= adcxx_probe, -	.remove	= __devexit_p(adcxx_remove), +	.remove	= adcxx_remove,  }; -static int __init init_adcxx(void) -{ -	return spi_register_driver(&adcxx_driver); -} - -static void __exit exit_adcxx(void) -{ -	spi_unregister_driver(&adcxx_driver); -} - -module_init(init_adcxx); -module_exit(exit_adcxx); +module_spi_driver(adcxx_driver);  MODULE_AUTHOR("Marc Pignat");  MODULE_DESCRIPTION("National Semiconductor adcxx8sxxx Linux driver");  | 
