Lines Matching +full:pmic +full:- +full:specific

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * acpi_ac.c - ACPI AC Adapter Driver (Revision: 27)
51 /* Lists of PMIC ACPI HIDs with an (often better) native charger driver */
53 { "INT33F4", -1 }, /* X-Powers AXP288 PMIC */
54 { "INT34D3", 3 }, /* Intel Cherrytrail Whiskey Cove PMIC */
94 return -EINVAL; in acpi_ac_get_state()
96 status = acpi_evaluate_integer(ac->device->handle, "_PSR", NULL, in acpi_ac_get_state()
97 &ac->state); in acpi_ac_get_state()
99 acpi_handle_info(ac->device->handle, in acpi_ac_get_state()
102 ac->state = ACPI_AC_STATUS_UNKNOWN; in acpi_ac_get_state()
103 return -ENODEV; in acpi_ac_get_state()
117 return -ENODEV; in get_ac_property()
120 return -ENODEV; in get_ac_property()
124 val->intval = ac->state; in get_ac_property()
127 return -EINVAL; in get_ac_property()
146 acpi_handle_debug(device->handle, "Unsupported event [0x%x]\n", in acpi_ac_notify()
154 * a specific time before doing actual operations in the in acpi_ac_notify()
157 * specific time for the EC event handler to make progress. in acpi_ac_notify()
163 acpi_bus_generate_netlink_event(device->pnp.device_class, in acpi_ac_notify()
164 dev_name(&device->dev), event, in acpi_ac_notify()
165 (u32) ac->state); in acpi_ac_notify()
166 acpi_notifier_call_chain(device, event, (u32) ac->state); in acpi_ac_notify()
167 kobject_uevent(&ac->charger->dev.kobj, KOBJ_CHANGE); in acpi_ac_notify()
178 * On HP Pavilion dv6-6179er AC status notifications aren't triggered in acpi_ac_battery_notify()
181 * discharging. Re-reading AC status triggers lost AC notifications, in acpi_ac_battery_notify()
184 if (strcmp(event->device_class, ACPI_BATTERY_CLASS) == 0 && in acpi_ac_battery_notify()
185 event->type == ACPI_BATTERY_NOTIFY_STATUS) in acpi_ac_battery_notify()
206 /* ECS EF20EA, AXP288 PMIC but uses separate fuel-gauge */
213 /* Lenovo Ideapad Miix 320, AXP288 PMIC, separate fuel-gauge */
218 DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo MIIX 320-10ICR"),
240 return -EINVAL; in acpi_ac_add()
244 return -ENOMEM; in acpi_ac_add()
246 ac->device = device; in acpi_ac_add()
249 device->driver_data = ac; in acpi_ac_add()
257 ac->charger_desc.name = acpi_device_bid(device); in acpi_ac_add()
258 ac->charger_desc.type = POWER_SUPPLY_TYPE_MAINS; in acpi_ac_add()
259 ac->charger_desc.properties = ac_props; in acpi_ac_add()
260 ac->charger_desc.num_properties = ARRAY_SIZE(ac_props); in acpi_ac_add()
261 ac->charger_desc.get_property = get_ac_property; in acpi_ac_add()
262 ac->charger = power_supply_register(&ac->device->dev, in acpi_ac_add()
263 &ac->charger_desc, &psy_cfg); in acpi_ac_add()
264 if (IS_ERR(ac->charger)) { in acpi_ac_add()
265 result = PTR_ERR(ac->charger); in acpi_ac_add()
270 acpi_device_bid(device), ac->state ? "on-line" : "off-line"); in acpi_ac_add()
272 ac->battery_nb.notifier_call = acpi_ac_battery_notify; in acpi_ac_add()
273 register_acpi_notifier(&ac->battery_nb); in acpi_ac_add()
288 return -EINVAL; in acpi_ac_resume()
292 return -EINVAL; in acpi_ac_resume()
294 old_state = ac->state; in acpi_ac_resume()
297 if (old_state != ac->state) in acpi_ac_resume()
298 kobject_uevent(&ac->charger->dev.kobj, KOBJ_CHANGE); in acpi_ac_resume()
311 return -EINVAL; in acpi_ac_remove()
315 power_supply_unregister(ac->charger); in acpi_ac_remove()
316 unregister_acpi_notifier(&ac->battery_nb); in acpi_ac_remove()
329 return -ENODEV; in acpi_ac_init()
337 pr_info("found native %s PMIC, not loading\n", in acpi_ac_init()
339 return -ENODEV; in acpi_ac_init()
345 return -ENODEV; in acpi_ac_init()