Lines Matching +full:gpio +full:- +full:keys

1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * LEDs : drivers/led/leds-adp5520
6 * GPIO : drivers/gpio/adp5520-gpio (ADP5520 only)
7 * Keys : drivers/input/keyboard/adp5520-keys (ADP5520 only)
17 * Copyright (C) 2006-2008 Marvell International Ltd.
49 dev_err(&client->dev, "failed reading at 0x%02x\n", reg); in __adp5520_read()
64 dev_err(&client->dev, "failed writing 0x%02x to 0x%02x\n", in __adp5520_write()
78 mutex_lock(&chip->lock); in __adp5520_ack_bits()
87 mutex_unlock(&chip->lock); in __adp5520_ack_bits()
109 mutex_lock(&chip->lock); in adp5520_set_bits()
111 ret = __adp5520_read(chip->client, reg, &reg_val); in adp5520_set_bits()
115 ret = __adp5520_write(chip->client, reg, reg_val); in adp5520_set_bits()
118 mutex_unlock(&chip->lock); in adp5520_set_bits()
129 mutex_lock(&chip->lock); in adp5520_clr_bits()
131 ret = __adp5520_read(chip->client, reg, &reg_val); in adp5520_clr_bits()
135 ret = __adp5520_write(chip->client, reg, reg_val); in adp5520_clr_bits()
138 mutex_unlock(&chip->lock); in adp5520_clr_bits()
148 if (chip->irq) { in adp5520_register_notifier()
149 adp5520_set_bits(chip->dev, ADP5520_INTERRUPT_ENABLE, in adp5520_register_notifier()
153 return blocking_notifier_chain_register(&chip->notifier_list, in adp5520_register_notifier()
157 return -ENODEV; in adp5520_register_notifier()
166 adp5520_clr_bits(chip->dev, ADP5520_INTERRUPT_ENABLE, in adp5520_unregister_notifier()
170 return blocking_notifier_chain_unregister(&chip->notifier_list, nb); in adp5520_unregister_notifier()
181 ret = __adp5520_read(chip->client, ADP5520_MODE_STATUS, &reg_val); in adp5520_irq_thread()
188 blocking_notifier_call_chain(&chip->notifier_list, events, NULL); in adp5520_irq_thread()
190 __adp5520_ack_bits(chip->client, ADP5520_MODE_STATUS, events); in adp5520_irq_thread()
204 return device_for_each_child(chip->dev, NULL, __remove_subdev); in adp5520_remove_subdevs()
210 struct adp5520_platform_data *pdata = dev_get_platdata(&client->dev); in adp5520_probe()
215 if (!i2c_check_functionality(client->adapter, in adp5520_probe()
217 dev_err(&client->dev, "SMBUS Word Data not Supported\n"); in adp5520_probe()
218 return -EIO; in adp5520_probe()
222 dev_err(&client->dev, "missing platform data\n"); in adp5520_probe()
223 return -ENODEV; in adp5520_probe()
226 chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL); in adp5520_probe()
228 return -ENOMEM; in adp5520_probe()
231 chip->client = client; in adp5520_probe()
233 chip->dev = &client->dev; in adp5520_probe()
234 chip->irq = client->irq; in adp5520_probe()
235 chip->id = id->driver_data; in adp5520_probe()
236 mutex_init(&chip->lock); in adp5520_probe()
238 if (chip->irq) { in adp5520_probe()
239 BLOCKING_INIT_NOTIFIER_HEAD(&chip->notifier_list); in adp5520_probe()
241 ret = request_threaded_irq(chip->irq, NULL, adp5520_irq_thread, in adp5520_probe()
245 dev_err(&client->dev, "failed to request irq %d\n", in adp5520_probe()
246 chip->irq); in adp5520_probe()
251 ret = adp5520_write(chip->dev, ADP5520_MODE_STATUS, ADP5520_nSTNBY); in adp5520_probe()
253 dev_err(&client->dev, "failed to write\n"); in adp5520_probe()
257 if (pdata->keys) { in adp5520_probe()
258 pdev = platform_device_register_data(chip->dev, "adp5520-keys", in adp5520_probe()
259 chip->id, pdata->keys, sizeof(*pdata->keys)); in adp5520_probe()
266 if (pdata->gpio) { in adp5520_probe()
267 pdev = platform_device_register_data(chip->dev, "adp5520-gpio", in adp5520_probe()
268 chip->id, pdata->gpio, sizeof(*pdata->gpio)); in adp5520_probe()
275 if (pdata->leds) { in adp5520_probe()
276 pdev = platform_device_register_data(chip->dev, "adp5520-led", in adp5520_probe()
277 chip->id, pdata->leds, sizeof(*pdata->leds)); in adp5520_probe()
284 if (pdata->backlight) { in adp5520_probe()
285 pdev = platform_device_register_data(chip->dev, in adp5520_probe()
286 "adp5520-backlight", in adp5520_probe()
287 chip->id, in adp5520_probe()
288 pdata->backlight, in adp5520_probe()
289 sizeof(*pdata->backlight)); in adp5520_probe()
302 if (chip->irq) in adp5520_probe()
303 free_irq(chip->irq, chip); in adp5520_probe()
312 struct adp5520_chip *chip = dev_get_drvdata(&client->dev); in adp5520_suspend()
314 adp5520_read(chip->dev, ADP5520_MODE_STATUS, &chip->mode); in adp5520_suspend()
316 chip->mode &= ADP5520_BL_EN | ADP5520_DIM_EN | ADP5520_nSTNBY; in adp5520_suspend()
317 adp5520_write(chip->dev, ADP5520_MODE_STATUS, 0); in adp5520_suspend()
324 struct adp5520_chip *chip = dev_get_drvdata(&client->dev); in adp5520_resume()
326 adp5520_write(chip->dev, ADP5520_MODE_STATUS, chip->mode); in adp5520_resume()
334 { "pmic-adp5520", ID_ADP5520 },
335 { "pmic-adp5501", ID_ADP5501 },