Lines Matching refs:sbs

73 	struct acpi_sbs *sbs;  member
151 struct acpi_sbs *sbs = to_acpi_sbs(psy); in sbs_get_ac_property() local
154 val->intval = sbs->charger_present; in sbs_get_ac_property()
343 static int acpi_manager_get_info(struct acpi_sbs *sbs) in acpi_manager_get_info() argument
348 result = acpi_smbus_read(sbs->hc, SMBUS_READ_WORD, ACPI_SBS_MANAGER, in acpi_manager_get_info()
351 sbs->batteries_supported = battery_system_info & 0x000f; in acpi_manager_get_info()
360 result = acpi_smbus_read(battery->sbs->hc, in acpi_battery_get_info()
381 result = acpi_smbus_read(battery->sbs->hc, in acpi_battery_get_state()
397 return acpi_smbus_read(battery->sbs->hc, SMBUS_READ_WORD, in acpi_battery_get_alarm()
404 struct acpi_sbs *sbs = battery->sbs; in acpi_battery_set_alarm() local
410 if (sbs->manager_present) { in acpi_battery_set_alarm()
411 ret = acpi_smbus_read(sbs->hc, SMBUS_READ_WORD, ACPI_SBS_MANAGER, in acpi_battery_set_alarm()
418 ret = acpi_smbus_write(sbs->hc, SMBUS_WRITE_WORD, in acpi_battery_set_alarm()
425 ret = acpi_smbus_write(sbs->hc, SMBUS_WRITE_WORD, ACPI_SBS_BATTERY, in acpi_battery_set_alarm()
431 static int acpi_ac_get_present(struct acpi_sbs *sbs) in acpi_ac_get_present() argument
436 result = acpi_smbus_read(sbs->hc, SMBUS_READ_WORD, ACPI_SBS_CHARGER, in acpi_ac_get_present()
449 sbs->charger_present = (status >> 15) & 0x1; in acpi_ac_get_present()
491 if (battery->sbs->manager_present) { in acpi_battery_read()
492 result = acpi_smbus_read(battery->sbs->hc, SMBUS_READ_WORD, in acpi_battery_read()
498 acpi_smbus_write(battery->sbs->hc, SMBUS_WRITE_WORD, in acpi_battery_read()
521 static int acpi_battery_add(struct acpi_sbs *sbs, int id) in acpi_battery_add() argument
523 struct acpi_battery *battery = &sbs->battery[id]; in acpi_battery_add()
528 battery->sbs = sbs; in acpi_battery_add()
546 battery->bat = power_supply_register(&sbs->device->dev, in acpi_battery_add()
560 ACPI_SBS_DEVICE_NAME, acpi_device_bid(sbs->device), in acpi_battery_add()
565 static void acpi_battery_remove(struct acpi_sbs *sbs, int id) in acpi_battery_remove() argument
567 struct acpi_battery *battery = &sbs->battery[id]; in acpi_battery_remove()
576 static int acpi_charger_add(struct acpi_sbs *sbs) in acpi_charger_add() argument
579 struct power_supply_config psy_cfg = { .drv_data = sbs, }; in acpi_charger_add()
581 result = acpi_ac_get_present(sbs); in acpi_charger_add()
585 sbs->charger_exists = 1; in acpi_charger_add()
586 sbs->charger = power_supply_register(&sbs->device->dev, in acpi_charger_add()
588 if (IS_ERR(sbs->charger)) { in acpi_charger_add()
589 result = PTR_ERR(sbs->charger); in acpi_charger_add()
590 sbs->charger = NULL; in acpi_charger_add()
593 ACPI_SBS_DEVICE_NAME, acpi_device_bid(sbs->device), in acpi_charger_add()
594 ACPI_AC_DIR_NAME, sbs->charger_present ? "on-line" : "off-line"); in acpi_charger_add()
599 static void acpi_charger_remove(struct acpi_sbs *sbs) in acpi_charger_remove() argument
601 if (sbs->charger) in acpi_charger_remove()
602 power_supply_unregister(sbs->charger); in acpi_charger_remove()
608 struct acpi_sbs *sbs = context; in acpi_sbs_callback() local
610 u8 saved_charger_state = sbs->charger_present; in acpi_sbs_callback()
613 if (sbs->charger_exists) { in acpi_sbs_callback()
614 acpi_ac_get_present(sbs); in acpi_sbs_callback()
615 if (sbs->charger_present != saved_charger_state) in acpi_sbs_callback()
616 kobject_uevent(&sbs->charger->dev.kobj, KOBJ_CHANGE); in acpi_sbs_callback()
619 if (sbs->manager_present) { in acpi_sbs_callback()
621 if (!(sbs->batteries_supported & (1 << id))) in acpi_sbs_callback()
623 bat = &sbs->battery[id]; in acpi_sbs_callback()
635 struct acpi_sbs *sbs; in acpi_sbs_add() local
639 sbs = kzalloc(sizeof(struct acpi_sbs), GFP_KERNEL); in acpi_sbs_add()
640 if (!sbs) { in acpi_sbs_add()
645 mutex_init(&sbs->lock); in acpi_sbs_add()
647 sbs->hc = acpi_driver_data(device->parent); in acpi_sbs_add()
648 sbs->device = device; in acpi_sbs_add()
651 device->driver_data = sbs; in acpi_sbs_add()
653 result = acpi_charger_add(sbs); in acpi_sbs_add()
660 result = acpi_manager_get_info(sbs); in acpi_sbs_add()
662 sbs->manager_present = 1; in acpi_sbs_add()
664 if ((sbs->batteries_supported & (1 << id))) in acpi_sbs_add()
665 acpi_battery_add(sbs, id); in acpi_sbs_add()
669 if (!sbs->manager_present) in acpi_sbs_add()
670 acpi_battery_add(sbs, 0); in acpi_sbs_add()
672 acpi_smbus_register_callback(sbs->hc, acpi_sbs_callback, sbs); in acpi_sbs_add()
681 struct acpi_sbs *sbs; in acpi_sbs_remove() local
686 sbs = acpi_driver_data(device); in acpi_sbs_remove()
687 if (!sbs) in acpi_sbs_remove()
689 mutex_lock(&sbs->lock); in acpi_sbs_remove()
690 acpi_smbus_unregister_callback(sbs->hc); in acpi_sbs_remove()
692 acpi_battery_remove(sbs, id); in acpi_sbs_remove()
693 acpi_charger_remove(sbs); in acpi_sbs_remove()
694 mutex_unlock(&sbs->lock); in acpi_sbs_remove()
695 mutex_destroy(&sbs->lock); in acpi_sbs_remove()
696 kfree(sbs); in acpi_sbs_remove()
703 struct acpi_sbs *sbs; in acpi_sbs_resume() local
706 sbs = to_acpi_device(dev)->driver_data; in acpi_sbs_resume()
707 acpi_sbs_callback(sbs); in acpi_sbs_resume()