@@ -53,7 +53,6 @@ struct ad8366_info {
5353
5454struct ad8366_state {
5555 struct spi_device * spi ;
56- struct regulator * reg ;
5756 struct mutex lock ; /* protect sensor state */
5857 struct gpio_desc * reset_gpio ;
5958 struct gpio_desc * enable_gpio ;
@@ -328,17 +327,13 @@ static int ad8366_probe(struct spi_device *spi)
328327 return - ENOMEM ;
329328
330329 st = iio_priv (indio_dev );
331-
332- st -> reg = devm_regulator_get (& spi -> dev , "vcc" );
333- if (!IS_ERR (st -> reg )) {
334- ret = regulator_enable (st -> reg );
335- if (ret )
336- return ret ;
337- }
338-
339- spi_set_drvdata (spi , indio_dev );
340330 st -> spi = spi ;
341331 st -> type = spi_get_device_id (spi )-> driver_data ;
332+ spi_set_drvdata (spi , indio_dev );
333+
334+ ret = devm_regulator_get_enable (& spi -> dev , "vcc" );
335+ if (ret )
336+ return dev_err_probe (& spi -> dev , ret , "Failed to get regulator\n" );
342337
343338 ret = devm_mutex_init (& spi -> dev , & st -> lock );
344339 if (ret )
@@ -360,21 +355,20 @@ static int ad8366_probe(struct spi_device *spi)
360355 case ID_HMC1018 :
361356 case ID_HMC1019 :
362357 st -> reset_gpio = devm_gpiod_get_optional (& spi -> dev , "reset" , GPIOD_OUT_HIGH );
363- if (IS_ERR (st -> reset_gpio )) {
364- ret = PTR_ERR (st -> reset_gpio );
365- goto error_disable_reg ;
366- }
358+ if (IS_ERR (st -> reset_gpio ))
359+ return dev_err_probe (& spi -> dev , PTR_ERR (st -> reset_gpio ),
360+ "Failed to get reset GPIO\n" );
367361
368- st -> enable_gpio = devm_gpiod_get (& spi -> dev , "enable" ,
369- GPIOD_OUT_HIGH );
362+ st -> enable_gpio = devm_gpiod_get_optional (& spi -> dev , "enable" , GPIOD_OUT_HIGH );
363+ if (IS_ERR (st -> enable_gpio ))
364+ return dev_err_probe (& spi -> dev , PTR_ERR (st -> enable_gpio ),
365+ "Failed to get enable GPIO\n" );
370366
371367 indio_dev -> channels = ada4961_channels ;
372368 indio_dev -> num_channels = ARRAY_SIZE (ada4961_channels );
373369 break ;
374370 default :
375- dev_err (& spi -> dev , "Invalid device ID\n" );
376- ret = - EINVAL ;
377- goto error_disable_reg ;
371+ return dev_err_probe (& spi -> dev , - EINVAL , "Invalid device ID\n" );
378372 }
379373
380374 st -> info = & ad8366_infos [st -> type ];
@@ -384,31 +378,9 @@ static int ad8366_probe(struct spi_device *spi)
384378
385379 ret = ad8366_write (indio_dev , 0 , 0 );
386380 if (ret < 0 )
387- goto error_disable_reg ;
388-
389- ret = iio_device_register (indio_dev );
390- if (ret )
391- goto error_disable_reg ;
392-
393- return 0 ;
394-
395- error_disable_reg :
396- if (!IS_ERR (st -> reg ))
397- regulator_disable (st -> reg );
398-
399- return ret ;
400- }
401-
402- static void ad8366_remove (struct spi_device * spi )
403- {
404- struct iio_dev * indio_dev = spi_get_drvdata (spi );
405- struct ad8366_state * st = iio_priv (indio_dev );
406- struct regulator * reg = st -> reg ;
407-
408- iio_device_unregister (indio_dev );
381+ return dev_err_probe (& spi -> dev , ret , "failed to write initial gain\n" );
409382
410- if (!IS_ERR (reg ))
411- regulator_disable (reg );
383+ return devm_iio_device_register (& spi -> dev , indio_dev );
412384}
413385
414386static const struct spi_device_id ad8366_id [] = {
@@ -432,7 +404,6 @@ static struct spi_driver ad8366_driver = {
432404 .name = KBUILD_MODNAME ,
433405 },
434406 .probe = ad8366_probe ,
435- .remove = ad8366_remove ,
436407 .id_table = ad8366_id ,
437408};
438409
0 commit comments