diff options
author | Ladislav Michl <ladis@linux-mips.org> | 2018-03-05 13:05:55 -0500 |
---|---|---|
committer | Sebastian Reichel <sre@kernel.org> | 2018-03-09 10:50:28 -0500 |
commit | d47c1e4b2f51e81683b087480401b9b42b2a58fd (patch) | |
tree | 63fecd49162f059fb2de36cc9075a0ac31d922d5 | |
parent | f5fec4cc2949421af74bdd005abd99fcbaf9d0d7 (diff) |
power: supply: gpio-charger: Remove pdata from gpio_charger
Platform data are now used only during probe time, so remove
them from gpio_charger structure and consolidate probing
function accordingly.
Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
[Replace of_property_read_string with dev_property_read_string]
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
-rw-r--r-- | drivers/power/supply/gpio-charger.c | 95 |
1 files changed, 41 insertions, 54 deletions
diff --git a/drivers/power/supply/gpio-charger.c b/drivers/power/supply/gpio-charger.c index 768bbcad97cb..bd2468ca6b63 100644 --- a/drivers/power/supply/gpio-charger.c +++ b/drivers/power/supply/gpio-charger.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/power/gpio-charger.h> | 28 | #include <linux/power/gpio-charger.h> |
29 | 29 | ||
30 | struct gpio_charger { | 30 | struct gpio_charger { |
31 | const struct gpio_charger_platform_data *pdata; | ||
32 | unsigned int irq; | 31 | unsigned int irq; |
33 | bool wakeup_enabled; | 32 | bool wakeup_enabled; |
34 | 33 | ||
@@ -67,52 +66,37 @@ static int gpio_charger_get_property(struct power_supply *psy, | |||
67 | return 0; | 66 | return 0; |
68 | } | 67 | } |
69 | 68 | ||
70 | static enum power_supply_property gpio_charger_properties[] = { | 69 | static enum power_supply_type gpio_charger_get_type(struct device *dev) |
71 | POWER_SUPPLY_PROP_ONLINE, | ||
72 | }; | ||
73 | |||
74 | static | ||
75 | struct gpio_charger_platform_data *gpio_charger_parse_dt(struct device *dev) | ||
76 | { | 70 | { |
77 | struct device_node *np = dev->of_node; | ||
78 | struct gpio_charger_platform_data *pdata; | ||
79 | const char *chargetype; | 71 | const char *chargetype; |
80 | int ret; | 72 | |
81 | 73 | if (!device_property_read_string(dev, "charger-type", &chargetype)) { | |
82 | if (!np) | 74 | if (!strcmp("unknown", chargetype)) |
83 | return ERR_PTR(-ENOENT); | 75 | return POWER_SUPPLY_TYPE_UNKNOWN; |
84 | 76 | if (!strcmp("battery", chargetype)) | |
85 | pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL); | 77 | return POWER_SUPPLY_TYPE_BATTERY; |
86 | if (!pdata) | 78 | if (!strcmp("ups", chargetype)) |
87 | return ERR_PTR(-ENOMEM); | 79 | return POWER_SUPPLY_TYPE_UPS; |
88 | 80 | if (!strcmp("mains", chargetype)) | |
89 | pdata->name = np->name; | 81 | return POWER_SUPPLY_TYPE_MAINS; |
90 | pdata->type = POWER_SUPPLY_TYPE_UNKNOWN; | 82 | if (!strcmp("usb-sdp", chargetype)) |
91 | ret = of_property_read_string(np, "charger-type", &chargetype); | 83 | return POWER_SUPPLY_TYPE_USB; |
92 | if (ret >= 0) { | 84 | if (!strcmp("usb-dcp", chargetype)) |
93 | if (!strncmp("unknown", chargetype, 7)) | 85 | return POWER_SUPPLY_TYPE_USB_DCP; |
94 | pdata->type = POWER_SUPPLY_TYPE_UNKNOWN; | 86 | if (!strcmp("usb-cdp", chargetype)) |
95 | else if (!strncmp("battery", chargetype, 7)) | 87 | return POWER_SUPPLY_TYPE_USB_CDP; |
96 | pdata->type = POWER_SUPPLY_TYPE_BATTERY; | 88 | if (!strcmp("usb-aca", chargetype)) |
97 | else if (!strncmp("ups", chargetype, 3)) | 89 | return POWER_SUPPLY_TYPE_USB_ACA; |
98 | pdata->type = POWER_SUPPLY_TYPE_UPS; | ||
99 | else if (!strncmp("mains", chargetype, 5)) | ||
100 | pdata->type = POWER_SUPPLY_TYPE_MAINS; | ||
101 | else if (!strncmp("usb-sdp", chargetype, 7)) | ||
102 | pdata->type = POWER_SUPPLY_TYPE_USB; | ||
103 | else if (!strncmp("usb-dcp", chargetype, 7)) | ||
104 | pdata->type = POWER_SUPPLY_TYPE_USB_DCP; | ||
105 | else if (!strncmp("usb-cdp", chargetype, 7)) | ||
106 | pdata->type = POWER_SUPPLY_TYPE_USB_CDP; | ||
107 | else if (!strncmp("usb-aca", chargetype, 7)) | ||
108 | pdata->type = POWER_SUPPLY_TYPE_USB_ACA; | ||
109 | else | ||
110 | dev_warn(dev, "unknown charger type %s\n", chargetype); | ||
111 | } | 90 | } |
91 | dev_warn(dev, "unknown charger type %s\n", chargetype); | ||
112 | 92 | ||
113 | return pdata; | 93 | return POWER_SUPPLY_TYPE_UNKNOWN; |
114 | } | 94 | } |
115 | 95 | ||
96 | static enum power_supply_property gpio_charger_properties[] = { | ||
97 | POWER_SUPPLY_PROP_ONLINE, | ||
98 | }; | ||
99 | |||
116 | static int gpio_charger_probe(struct platform_device *pdev) | 100 | static int gpio_charger_probe(struct platform_device *pdev) |
117 | { | 101 | { |
118 | struct device *dev = &pdev->dev; | 102 | struct device *dev = &pdev->dev; |
@@ -123,14 +107,9 @@ static int gpio_charger_probe(struct platform_device *pdev) | |||
123 | unsigned long flags; | 107 | unsigned long flags; |
124 | int irq, ret; | 108 | int irq, ret; |
125 | 109 | ||
126 | if (!pdata) { | 110 | if (!pdata && !dev->of_node) { |
127 | pdata = gpio_charger_parse_dt(dev); | 111 | dev_err(dev, "No platform data\n"); |
128 | if (IS_ERR(pdata)) { | 112 | return -ENOENT; |
129 | ret = PTR_ERR(pdata); | ||
130 | if (ret != -EPROBE_DEFER) | ||
131 | dev_err(dev, "No platform data\n"); | ||
132 | return ret; | ||
133 | } | ||
134 | } | 113 | } |
135 | 114 | ||
136 | gpio_charger = devm_kzalloc(dev, sizeof(*gpio_charger), GFP_KERNEL); | 115 | gpio_charger = devm_kzalloc(dev, sizeof(*gpio_charger), GFP_KERNEL); |
@@ -173,18 +152,26 @@ static int gpio_charger_probe(struct platform_device *pdev) | |||
173 | } | 152 | } |
174 | 153 | ||
175 | charger_desc = &gpio_charger->charger_desc; | 154 | charger_desc = &gpio_charger->charger_desc; |
176 | |||
177 | charger_desc->name = pdata->name ? pdata->name : "gpio-charger"; | ||
178 | charger_desc->type = pdata->type; | ||
179 | charger_desc->properties = gpio_charger_properties; | 155 | charger_desc->properties = gpio_charger_properties; |
180 | charger_desc->num_properties = ARRAY_SIZE(gpio_charger_properties); | 156 | charger_desc->num_properties = ARRAY_SIZE(gpio_charger_properties); |
181 | charger_desc->get_property = gpio_charger_get_property; | 157 | charger_desc->get_property = gpio_charger_get_property; |
182 | 158 | ||
183 | psy_cfg.supplied_to = pdata->supplied_to; | ||
184 | psy_cfg.num_supplicants = pdata->num_supplicants; | ||
185 | psy_cfg.of_node = dev->of_node; | 159 | psy_cfg.of_node = dev->of_node; |
186 | psy_cfg.drv_data = gpio_charger; | 160 | psy_cfg.drv_data = gpio_charger; |
187 | 161 | ||
162 | if (pdata) { | ||
163 | charger_desc->name = pdata->name; | ||
164 | charger_desc->type = pdata->type; | ||
165 | psy_cfg.supplied_to = pdata->supplied_to; | ||
166 | psy_cfg.num_supplicants = pdata->num_supplicants; | ||
167 | } else { | ||
168 | charger_desc->name = dev->of_node->name; | ||
169 | charger_desc->type = gpio_charger_get_type(dev); | ||
170 | } | ||
171 | |||
172 | if (!charger_desc->name) | ||
173 | charger_desc->name = pdev->name; | ||
174 | |||
188 | gpio_charger->charger = devm_power_supply_register(dev, charger_desc, | 175 | gpio_charger->charger = devm_power_supply_register(dev, charger_desc, |
189 | &psy_cfg); | 176 | &psy_cfg); |
190 | if (IS_ERR(gpio_charger->charger)) { | 177 | if (IS_ERR(gpio_charger->charger)) { |