aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2012-02-20 13:37:05 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-02-24 15:11:13 -0500
commit01788c533acbd63702146a2be975ae4007cfb2cf (patch)
tree06af3b838bb42e46ad124c1841398c5113f455ae /drivers/staging/iio
parent4eeb3335bbfb4e9d6a7995f283deeecb06e07aea (diff)
staging:iio: Use dev_pm_ops
Use dev_pm_ops instead of legacy suspend/resume callbacks for IIO drivers. Note that this patch introduces a few new #ifdef CONFIG_PM_SLEEP around the suspend and resume callbacks to avoid warnings of unused functions if CONFIG_PM_SLEEP is not defined. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Acked-by: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/iio')
-rw-r--r--drivers/staging/iio/addac/adt7316-i2c.c18
-rw-r--r--drivers/staging/iio/addac/adt7316-spi.c18
-rw-r--r--drivers/staging/iio/addac/adt7316.c11
-rw-r--r--drivers/staging/iio/addac/adt7316.h9
-rw-r--r--drivers/staging/iio/dac/max517.c18
-rw-r--r--drivers/staging/iio/light/tsl2563.c26
-rw-r--r--drivers/staging/iio/light/tsl2583.c17
-rw-r--r--drivers/staging/iio/magnetometer/hmc5843.c20
8 files changed, 66 insertions, 71 deletions
diff --git a/drivers/staging/iio/addac/adt7316-i2c.c b/drivers/staging/iio/addac/adt7316-i2c.c
index 2c03a39220e..9e128dd7d45 100644
--- a/drivers/staging/iio/addac/adt7316-i2c.c
+++ b/drivers/staging/iio/addac/adt7316-i2c.c
@@ -125,30 +125,14 @@ static const struct i2c_device_id adt7316_i2c_id[] = {
125 125
126MODULE_DEVICE_TABLE(i2c, adt7316_i2c_id); 126MODULE_DEVICE_TABLE(i2c, adt7316_i2c_id);
127 127
128#ifdef CONFIG_PM
129static int adt7316_i2c_suspend(struct i2c_client *client, pm_message_t message)
130{
131 return adt7316_disable(&client->dev);
132}
133
134static int adt7316_i2c_resume(struct i2c_client *client)
135{
136 return adt7316_enable(&client->dev);
137}
138#else
139# define adt7316_i2c_suspend NULL
140# define adt7316_i2c_resume NULL
141#endif
142
143static struct i2c_driver adt7316_driver = { 128static struct i2c_driver adt7316_driver = {
144 .driver = { 129 .driver = {
145 .name = "adt7316", 130 .name = "adt7316",
131 .pm = ADT7316_PM_OPS,
146 .owner = THIS_MODULE, 132 .owner = THIS_MODULE,
147 }, 133 },
148 .probe = adt7316_i2c_probe, 134 .probe = adt7316_i2c_probe,
149 .remove = __devexit_p(adt7316_i2c_remove), 135 .remove = __devexit_p(adt7316_i2c_remove),
150 .suspend = adt7316_i2c_suspend,
151 .resume = adt7316_i2c_resume,
152 .id_table = adt7316_i2c_id, 136 .id_table = adt7316_i2c_id,
153}; 137};
154module_i2c_driver(adt7316_driver); 138module_i2c_driver(adt7316_driver);
diff --git a/drivers/staging/iio/addac/adt7316-spi.c b/drivers/staging/iio/addac/adt7316-spi.c
index 1ea3cd06299..985f7d8a6eb 100644
--- a/drivers/staging/iio/addac/adt7316-spi.c
+++ b/drivers/staging/iio/addac/adt7316-spi.c
@@ -133,30 +133,14 @@ static const struct spi_device_id adt7316_spi_id[] = {
133 133
134MODULE_DEVICE_TABLE(spi, adt7316_spi_id); 134MODULE_DEVICE_TABLE(spi, adt7316_spi_id);
135 135
136#ifdef CONFIG_PM
137static int adt7316_spi_suspend(struct spi_device *spi_dev, pm_message_t message)
138{
139 return adt7316_disable(&spi_dev->dev);
140}
141
142static int adt7316_spi_resume(struct spi_device *spi_dev)
143{
144 return adt7316_enable(&spi_dev->dev);
145}
146#else
147# define adt7316_spi_suspend NULL
148# define adt7316_spi_resume NULL
149#endif
150
151static struct spi_driver adt7316_driver = { 136static struct spi_driver adt7316_driver = {
152 .driver = { 137 .driver = {
153 .name = "adt7316", 138 .name = "adt7316",
139 .pm = ADT7316_PM_OPS,
154 .owner = THIS_MODULE, 140 .owner = THIS_MODULE,
155 }, 141 },
156 .probe = adt7316_spi_probe, 142 .probe = adt7316_spi_probe,
157 .remove = __devexit_p(adt7316_spi_remove), 143 .remove = __devexit_p(adt7316_spi_remove),
158 .suspend = adt7316_spi_suspend,
159 .resume = adt7316_spi_resume,
160 .id_table = adt7316_spi_id, 144 .id_table = adt7316_spi_id,
161}; 145};
162module_spi_driver(adt7316_driver); 146module_spi_driver(adt7316_driver);
diff --git a/drivers/staging/iio/addac/adt7316.c b/drivers/staging/iio/addac/adt7316.c
index 13c39292d3f..fd6a4544405 100644
--- a/drivers/staging/iio/addac/adt7316.c
+++ b/drivers/staging/iio/addac/adt7316.c
@@ -2089,24 +2089,25 @@ static struct attribute_group adt7516_event_attribute_group = {
2089 .name = "events", 2089 .name = "events",
2090}; 2090};
2091 2091
2092#ifdef CONFIG_PM 2092#ifdef CONFIG_PM_SLEEP
2093int adt7316_disable(struct device *dev) 2093static int adt7316_disable(struct device *dev)
2094{ 2094{
2095 struct iio_dev *dev_info = dev_get_drvdata(dev); 2095 struct iio_dev *dev_info = dev_get_drvdata(dev);
2096 struct adt7316_chip_info *chip = iio_priv(dev_info); 2096 struct adt7316_chip_info *chip = iio_priv(dev_info);
2097 2097
2098 return _adt7316_store_enabled(chip, 0); 2098 return _adt7316_store_enabled(chip, 0);
2099} 2099}
2100EXPORT_SYMBOL(adt7316_disable);
2101 2100
2102int adt7316_enable(struct device *dev) 2101static int adt7316_enable(struct device *dev)
2103{ 2102{
2104 struct iio_dev *dev_info = dev_get_drvdata(dev); 2103 struct iio_dev *dev_info = dev_get_drvdata(dev);
2105 struct adt7316_chip_info *chip = iio_priv(dev_info); 2104 struct adt7316_chip_info *chip = iio_priv(dev_info);
2106 2105
2107 return _adt7316_store_enabled(chip, 1); 2106 return _adt7316_store_enabled(chip, 1);
2108} 2107}
2109EXPORT_SYMBOL(adt7316_enable); 2108
2109SIMPLE_DEV_PM_OPS(adt7316_pm_ops, adt7316_disable, adt7316_enable);
2110EXPORT_SYMBOL_GPL(adt7316_pm_ops);
2110#endif 2111#endif
2111 2112
2112static const struct iio_info adt7316_info = { 2113static const struct iio_info adt7316_info = {
diff --git a/drivers/staging/iio/addac/adt7316.h b/drivers/staging/iio/addac/adt7316.h
index d34bd679bb4..4d3efff46ae 100644
--- a/drivers/staging/iio/addac/adt7316.h
+++ b/drivers/staging/iio/addac/adt7316.h
@@ -10,6 +10,7 @@
10#define _ADT7316_H_ 10#define _ADT7316_H_
11 11
12#include <linux/types.h> 12#include <linux/types.h>
13#include <linux/pm.h>
13 14
14#define ADT7316_REG_MAX_ADDR 0x3F 15#define ADT7316_REG_MAX_ADDR 0x3F
15 16
@@ -23,9 +24,11 @@ struct adt7316_bus {
23 int (*multi_write) (void *client, u8 first_reg, u8 count, u8 *data); 24 int (*multi_write) (void *client, u8 first_reg, u8 count, u8 *data);
24}; 25};
25 26
26#ifdef CONFIG_PM 27#ifdef CONFIG_PM_SLEEP
27int adt7316_disable(struct device *dev); 28extern const struct dev_pm_ops adt7316_pm_ops;
28int adt7316_enable(struct device *dev); 29#define ADT7316_PM_OPS (&adt7316_pm_ops)
30#else
31#define ADT7316_PM_OPS NULL
29#endif 32#endif
30int adt7316_probe(struct device *dev, struct adt7316_bus *bus, const char *name); 33int adt7316_probe(struct device *dev, struct adt7316_bus *bus, const char *name);
31int adt7316_remove(struct device *dev); 34int adt7316_remove(struct device *dev);
diff --git a/drivers/staging/iio/dac/max517.c b/drivers/staging/iio/dac/max517.c
index a4df6d7443c..41483c72cec 100644
--- a/drivers/staging/iio/dac/max517.c
+++ b/drivers/staging/iio/dac/max517.c
@@ -179,20 +179,27 @@ static struct attribute_group max518_attribute_group = {
179 .attrs = max518_attributes, 179 .attrs = max518_attributes,
180}; 180};
181 181
182static int max517_suspend(struct i2c_client *client, pm_message_t mesg) 182#ifdef CONFIG_PM_SLEEP
183static int max517_suspend(struct device *dev)
183{ 184{
184 u8 outbuf = COMMAND_PD; 185 u8 outbuf = COMMAND_PD;
185 186
186 return i2c_master_send(client, &outbuf, 1); 187 return i2c_master_send(to_i2c_client(dev), &outbuf, 1);
187} 188}
188 189
189static int max517_resume(struct i2c_client *client) 190static int max517_resume(struct device *dev)
190{ 191{
191 u8 outbuf = 0; 192 u8 outbuf = 0;
192 193
193 return i2c_master_send(client, &outbuf, 1); 194 return i2c_master_send(to_i2c_client(dev), &outbuf, 1);
194} 195}
195 196
197static SIMPLE_DEV_PM_OPS(max517_pm_ops, max517_suspend, max517_resume);
198#define MAX517_PM_OPS (&max517_pm_ops)
199#else
200#define MAX517_PM_OPS NULL
201#endif
202
196static const struct iio_info max517_info = { 203static const struct iio_info max517_info = {
197 .attrs = &max517_attribute_group, 204 .attrs = &max517_attribute_group,
198 .driver_module = THIS_MODULE, 205 .driver_module = THIS_MODULE,
@@ -273,11 +280,10 @@ MODULE_DEVICE_TABLE(i2c, max517_id);
273static struct i2c_driver max517_driver = { 280static struct i2c_driver max517_driver = {
274 .driver = { 281 .driver = {
275 .name = MAX517_DRV_NAME, 282 .name = MAX517_DRV_NAME,
283 .pm = MAX517_PM_OPS,
276 }, 284 },
277 .probe = max517_probe, 285 .probe = max517_probe,
278 .remove = max517_remove, 286 .remove = max517_remove,
279 .suspend = max517_suspend,
280 .resume = max517_resume,
281 .id_table = max517_id, 287 .id_table = max517_id,
282}; 288};
283module_i2c_driver(max517_driver); 289module_i2c_driver(max517_driver);
diff --git a/drivers/staging/iio/light/tsl2563.c b/drivers/staging/iio/light/tsl2563.c
index ffca85e81ef..aca1e0380ef 100644
--- a/drivers/staging/iio/light/tsl2563.c
+++ b/drivers/staging/iio/light/tsl2563.c
@@ -118,7 +118,7 @@ struct tsl2563_chip {
118 struct delayed_work poweroff_work; 118 struct delayed_work poweroff_work;
119 119
120 /* Remember state for suspend and resume functions */ 120 /* Remember state for suspend and resume functions */
121 pm_message_t state; 121 bool suspended;
122 122
123 struct tsl2563_gainlevel_coeff const *gainlevel; 123 struct tsl2563_gainlevel_coeff const *gainlevel;
124 124
@@ -315,7 +315,7 @@ static int tsl2563_get_adc(struct tsl2563_chip *chip)
315 int retry = 1; 315 int retry = 1;
316 int ret = 0; 316 int ret = 0;
317 317
318 if (chip->state.event != PM_EVENT_ON) 318 if (chip->suspended)
319 goto out; 319 goto out;
320 320
321 if (!chip->int_enabled) { 321 if (!chip->int_enabled) {
@@ -810,9 +810,10 @@ static int tsl2563_remove(struct i2c_client *client)
810 return 0; 810 return 0;
811} 811}
812 812
813static int tsl2563_suspend(struct i2c_client *client, pm_message_t state) 813#ifdef CONFIG_PM_SLEEP
814static int tsl2563_suspend(struct device *dev)
814{ 815{
815 struct tsl2563_chip *chip = i2c_get_clientdata(client); 816 struct tsl2563_chip *chip = i2c_get_clientdata(to_i2c_client(dev));
816 int ret; 817 int ret;
817 818
818 mutex_lock(&chip->lock); 819 mutex_lock(&chip->lock);
@@ -821,16 +822,16 @@ static int tsl2563_suspend(struct i2c_client *client, pm_message_t state)
821 if (ret) 822 if (ret)
822 goto out; 823 goto out;
823 824
824 chip->state = state; 825 chip->suspended = true;
825 826
826out: 827out:
827 mutex_unlock(&chip->lock); 828 mutex_unlock(&chip->lock);
828 return ret; 829 return ret;
829} 830}
830 831
831static int tsl2563_resume(struct i2c_client *client) 832static int tsl2563_resume(struct device *dev)
832{ 833{
833 struct tsl2563_chip *chip = i2c_get_clientdata(client); 834 struct tsl2563_chip *chip = i2c_get_clientdata(to_i2c_client(dev));
834 int ret; 835 int ret;
835 836
836 mutex_lock(&chip->lock); 837 mutex_lock(&chip->lock);
@@ -843,13 +844,19 @@ static int tsl2563_resume(struct i2c_client *client)
843 if (ret) 844 if (ret)
844 goto out; 845 goto out;
845 846
846 chip->state.event = PM_EVENT_ON; 847 chip->suspended = false;
847 848
848out: 849out:
849 mutex_unlock(&chip->lock); 850 mutex_unlock(&chip->lock);
850 return ret; 851 return ret;
851} 852}
852 853
854static SIMPLE_DEV_PM_OPS(tsl2563_pm_ops, tsl2563_suspend, tsl2563_resume);
855#define TSL2563_PM_OPS (&tsl2563_pm_ops)
856#else
857#define TSL2563_PM_OPS NULL
858#endif
859
853static const struct i2c_device_id tsl2563_id[] = { 860static const struct i2c_device_id tsl2563_id[] = {
854 { "tsl2560", 0 }, 861 { "tsl2560", 0 },
855 { "tsl2561", 1 }, 862 { "tsl2561", 1 },
@@ -862,9 +869,8 @@ MODULE_DEVICE_TABLE(i2c, tsl2563_id);
862static struct i2c_driver tsl2563_i2c_driver = { 869static struct i2c_driver tsl2563_i2c_driver = {
863 .driver = { 870 .driver = {
864 .name = "tsl2563", 871 .name = "tsl2563",
872 .pm = TSL2563_PM_OPS,
865 }, 873 },
866 .suspend = tsl2563_suspend,
867 .resume = tsl2563_resume,
868 .probe = tsl2563_probe, 874 .probe = tsl2563_probe,
869 .remove = __devexit_p(tsl2563_remove), 875 .remove = __devexit_p(tsl2563_remove),
870 .id_table = tsl2563_id, 876 .id_table = tsl2563_id,
diff --git a/drivers/staging/iio/light/tsl2583.c b/drivers/staging/iio/light/tsl2583.c
index 5b6455a238d..9fe9a671ecf 100644
--- a/drivers/staging/iio/light/tsl2583.c
+++ b/drivers/staging/iio/light/tsl2583.c
@@ -884,9 +884,10 @@ fail2:
884 return ret; 884 return ret;
885} 885}
886 886
887static int taos_suspend(struct i2c_client *client, pm_message_t state) 887#ifdef CONFIG_PM_SLEEP
888static int taos_suspend(struct device *dev)
888{ 889{
889 struct iio_dev *indio_dev = i2c_get_clientdata(client); 890 struct iio_dev *indio_dev = i2c_get_clientdata(to_i2c_client(dev));
890 struct tsl2583_chip *chip = iio_priv(indio_dev); 891 struct tsl2583_chip *chip = iio_priv(indio_dev);
891 int ret = 0; 892 int ret = 0;
892 893
@@ -901,9 +902,9 @@ static int taos_suspend(struct i2c_client *client, pm_message_t state)
901 return ret; 902 return ret;
902} 903}
903 904
904static int taos_resume(struct i2c_client *client) 905static int taos_resume(struct device *dev)
905{ 906{
906 struct iio_dev *indio_dev = i2c_get_clientdata(client); 907 struct iio_dev *indio_dev = i2c_get_clientdata(to_i2c_client(dev));
907 struct tsl2583_chip *chip = iio_priv(indio_dev); 908 struct tsl2583_chip *chip = iio_priv(indio_dev);
908 int ret = 0; 909 int ret = 0;
909 910
@@ -916,6 +917,11 @@ static int taos_resume(struct i2c_client *client)
916 return ret; 917 return ret;
917} 918}
918 919
920static SIMPLE_DEV_PM_OPS(taos_pm_ops, taos_suspend, taos_resume);
921#define TAOS_PM_OPS (&taos_pm_ops)
922#else
923#define TAOS_PM_OPS NULL
924#endif
919 925
920static int __devexit taos_remove(struct i2c_client *client) 926static int __devexit taos_remove(struct i2c_client *client)
921{ 927{
@@ -937,10 +943,9 @@ MODULE_DEVICE_TABLE(i2c, taos_idtable);
937static struct i2c_driver taos_driver = { 943static struct i2c_driver taos_driver = {
938 .driver = { 944 .driver = {
939 .name = "tsl2583", 945 .name = "tsl2583",
946 .pm = TAOS_PM_OPS,
940 }, 947 },
941 .id_table = taos_idtable, 948 .id_table = taos_idtable,
942 .suspend = taos_suspend,
943 .resume = taos_resume,
944 .probe = taos_probe, 949 .probe = taos_probe,
945 .remove = __devexit_p(taos_remove), 950 .remove = __devexit_p(taos_remove),
946}; 951};
diff --git a/drivers/staging/iio/magnetometer/hmc5843.c b/drivers/staging/iio/magnetometer/hmc5843.c
index f2e85a9cf19..d24992ceb2b 100644
--- a/drivers/staging/iio/magnetometer/hmc5843.c
+++ b/drivers/staging/iio/magnetometer/hmc5843.c
@@ -588,19 +588,26 @@ static int hmc5843_remove(struct i2c_client *client)
588 return 0; 588 return 0;
589} 589}
590 590
591static int hmc5843_suspend(struct i2c_client *client, pm_message_t mesg) 591#ifdef CONFIG_PM_SLEEP
592static int hmc5843_suspend(struct device *dev)
592{ 593{
593 hmc5843_configure(client, MODE_SLEEP); 594 hmc5843_configure(to_i2c_client(dev), MODE_SLEEP);
594 return 0; 595 return 0;
595} 596}
596 597
597static int hmc5843_resume(struct i2c_client *client) 598static int hmc5843_resume(struct device *dev)
598{ 599{
599 struct hmc5843_data *data = i2c_get_clientdata(client); 600 struct hmc5843_data *data = i2c_get_clientdata(to_i2c_client(dev));
600 hmc5843_configure(client, data->operating_mode); 601 hmc5843_configure(to_i2c_client(dev), data->operating_mode);
601 return 0; 602 return 0;
602} 603}
603 604
605static SIMPLE_DEV_PM_OPS(hmc5843_pm_ops, hmc5843_suspend, hmc5843_resume);
606#define HMC5843_PM_OPS (&hmc5843_pm_ops)
607#else
608#define HMC5843_PM_OPS NULL
609#endif
610
604static const struct i2c_device_id hmc5843_id[] = { 611static const struct i2c_device_id hmc5843_id[] = {
605 { "hmc5843", 0 }, 612 { "hmc5843", 0 },
606 { } 613 { }
@@ -610,14 +617,13 @@ MODULE_DEVICE_TABLE(i2c, hmc5843_id);
610static struct i2c_driver hmc5843_driver = { 617static struct i2c_driver hmc5843_driver = {
611 .driver = { 618 .driver = {
612 .name = "hmc5843", 619 .name = "hmc5843",
620 .pm = HMC5843_PM_OPS,
613 }, 621 },
614 .id_table = hmc5843_id, 622 .id_table = hmc5843_id,
615 .probe = hmc5843_probe, 623 .probe = hmc5843_probe,
616 .remove = hmc5843_remove, 624 .remove = hmc5843_remove,
617 .detect = hmc5843_detect, 625 .detect = hmc5843_detect,
618 .address_list = normal_i2c, 626 .address_list = normal_i2c,
619 .suspend = hmc5843_suspend,
620 .resume = hmc5843_resume,
621}; 627};
622module_i2c_driver(hmc5843_driver); 628module_i2c_driver(hmc5843_driver);
623 629