Lines Matching refs:sbs

75 	struct acpi_sbs *sbs;  member
153 struct acpi_sbs *sbs = to_acpi_sbs(psy); in sbs_get_ac_property() local
156 val->intval = sbs->charger_present; in sbs_get_ac_property()
345 static int acpi_manager_get_info(struct acpi_sbs *sbs) in acpi_manager_get_info() argument
350 result = acpi_smbus_read(sbs->hc, SMBUS_READ_WORD, ACPI_SBS_MANAGER, in acpi_manager_get_info()
353 sbs->batteries_supported = battery_system_info & 0x000f; in acpi_manager_get_info()
362 result = acpi_smbus_read(battery->sbs->hc, in acpi_battery_get_info()
383 result = acpi_smbus_read(battery->sbs->hc, in acpi_battery_get_state()
399 return acpi_smbus_read(battery->sbs->hc, SMBUS_READ_WORD, in acpi_battery_get_alarm()
406 struct acpi_sbs *sbs = battery->sbs; in acpi_battery_set_alarm() local
412 if (sbs->manager_present) { in acpi_battery_set_alarm()
413 ret = acpi_smbus_read(sbs->hc, SMBUS_READ_WORD, ACPI_SBS_MANAGER, in acpi_battery_set_alarm()
420 ret = acpi_smbus_write(sbs->hc, SMBUS_WRITE_WORD, in acpi_battery_set_alarm()
427 ret = acpi_smbus_write(sbs->hc, SMBUS_WRITE_WORD, ACPI_SBS_BATTERY, in acpi_battery_set_alarm()
433 static int acpi_ac_get_present(struct acpi_sbs *sbs) in acpi_ac_get_present() argument
438 result = acpi_smbus_read(sbs->hc, SMBUS_READ_WORD, ACPI_SBS_CHARGER, in acpi_ac_get_present()
451 sbs->charger_present = (status >> 15) & 0x1; in acpi_ac_get_present()
493 if (battery->sbs->manager_present) { in acpi_battery_read()
494 result = acpi_smbus_read(battery->sbs->hc, SMBUS_READ_WORD, in acpi_battery_read()
500 acpi_smbus_write(battery->sbs->hc, SMBUS_WRITE_WORD, in acpi_battery_read()
523 static int acpi_battery_add(struct acpi_sbs *sbs, int id) in acpi_battery_add() argument
525 struct acpi_battery *battery = &sbs->battery[id]; in acpi_battery_add()
530 battery->sbs = sbs; in acpi_battery_add()
548 battery->bat = power_supply_register(&sbs->device->dev, in acpi_battery_add()
562 ACPI_SBS_DEVICE_NAME, acpi_device_bid(sbs->device), in acpi_battery_add()
567 static void acpi_battery_remove(struct acpi_sbs *sbs, int id) in acpi_battery_remove() argument
569 struct acpi_battery *battery = &sbs->battery[id]; in acpi_battery_remove()
578 static int acpi_charger_add(struct acpi_sbs *sbs) in acpi_charger_add() argument
581 struct power_supply_config psy_cfg = { .drv_data = sbs, }; in acpi_charger_add()
583 result = acpi_ac_get_present(sbs); in acpi_charger_add()
587 sbs->charger_exists = 1; in acpi_charger_add()
588 sbs->charger = power_supply_register(&sbs->device->dev, in acpi_charger_add()
590 if (IS_ERR(sbs->charger)) { in acpi_charger_add()
591 result = PTR_ERR(sbs->charger); in acpi_charger_add()
592 sbs->charger = NULL; in acpi_charger_add()
595 ACPI_SBS_DEVICE_NAME, acpi_device_bid(sbs->device), in acpi_charger_add()
596 ACPI_AC_DIR_NAME, sbs->charger_present ? "on-line" : "off-line"); in acpi_charger_add()
601 static void acpi_charger_remove(struct acpi_sbs *sbs) in acpi_charger_remove() argument
603 if (sbs->charger) in acpi_charger_remove()
604 power_supply_unregister(sbs->charger); in acpi_charger_remove()
610 struct acpi_sbs *sbs = context; in acpi_sbs_callback() local
612 u8 saved_charger_state = sbs->charger_present; in acpi_sbs_callback()
615 if (sbs->charger_exists) { in acpi_sbs_callback()
616 acpi_ac_get_present(sbs); in acpi_sbs_callback()
617 if (sbs->charger_present != saved_charger_state) in acpi_sbs_callback()
618 kobject_uevent(&sbs->charger->dev.kobj, KOBJ_CHANGE); in acpi_sbs_callback()
621 if (sbs->manager_present) { in acpi_sbs_callback()
623 if (!(sbs->batteries_supported & (1 << id))) in acpi_sbs_callback()
625 bat = &sbs->battery[id]; in acpi_sbs_callback()
654 struct acpi_sbs *sbs; in acpi_sbs_add() local
660 sbs = kzalloc(sizeof(struct acpi_sbs), GFP_KERNEL); in acpi_sbs_add()
661 if (!sbs) { in acpi_sbs_add()
666 mutex_init(&sbs->lock); in acpi_sbs_add()
668 sbs->hc = acpi_driver_data(device->parent); in acpi_sbs_add()
669 sbs->device = device; in acpi_sbs_add()
672 device->driver_data = sbs; in acpi_sbs_add()
674 result = acpi_charger_add(sbs); in acpi_sbs_add()
681 result = acpi_manager_get_info(sbs); in acpi_sbs_add()
683 sbs->manager_present = 1; in acpi_sbs_add()
685 if ((sbs->batteries_supported & (1 << id))) in acpi_sbs_add()
686 acpi_battery_add(sbs, id); in acpi_sbs_add()
690 if (!sbs->manager_present) in acpi_sbs_add()
691 acpi_battery_add(sbs, 0); in acpi_sbs_add()
693 acpi_smbus_register_callback(sbs->hc, acpi_sbs_callback, sbs); in acpi_sbs_add()
702 struct acpi_sbs *sbs; in acpi_sbs_remove() local
707 sbs = acpi_driver_data(device); in acpi_sbs_remove()
708 if (!sbs) in acpi_sbs_remove()
710 mutex_lock(&sbs->lock); in acpi_sbs_remove()
711 acpi_smbus_unregister_callback(sbs->hc); in acpi_sbs_remove()
713 acpi_battery_remove(sbs, id); in acpi_sbs_remove()
714 acpi_charger_remove(sbs); in acpi_sbs_remove()
715 mutex_unlock(&sbs->lock); in acpi_sbs_remove()
716 mutex_destroy(&sbs->lock); in acpi_sbs_remove()
717 kfree(sbs); in acpi_sbs_remove()
724 struct acpi_sbs *sbs; in acpi_sbs_resume() local
727 sbs = to_acpi_device(dev)->driver_data; in acpi_sbs_resume()
728 acpi_sbs_callback(sbs); in acpi_sbs_resume()