Lines Matching defs:sbs

3  *  sbs.c - ACPI Smart Battery System Driver ($Revision: 2.0 $)
28 #define ACPI_SBS_CLASS "sbs"
57 struct acpi_sbs *sbs;
135 struct acpi_sbs *sbs = to_acpi_sbs(psy);
138 val->intval = sbs->charger_present;
286 .name = "sbs-charger",
327 static int acpi_manager_get_info(struct acpi_sbs *sbs)
332 result = acpi_smbus_read(sbs->hc, SMBUS_READ_WORD, ACPI_SBS_MANAGER,
335 sbs->batteries_supported = battery_system_info & 0x000f;
344 result = acpi_smbus_read(battery->sbs->hc,
365 result = acpi_smbus_read(battery->sbs->hc,
381 return acpi_smbus_read(battery->sbs->hc, SMBUS_READ_WORD,
388 struct acpi_sbs *sbs = battery->sbs;
394 if (sbs->manager_present) {
395 ret = acpi_smbus_read(sbs->hc, SMBUS_READ_WORD, ACPI_SBS_MANAGER,
402 ret = acpi_smbus_write(sbs->hc, SMBUS_WRITE_WORD,
409 ret = acpi_smbus_write(sbs->hc, SMBUS_WRITE_WORD, ACPI_SBS_BATTERY,
415 static int acpi_ac_get_present(struct acpi_sbs *sbs)
420 result = acpi_smbus_read(sbs->hc, SMBUS_READ_WORD, ACPI_SBS_CHARGER,
437 sbs->charger_present = (status >> 15) & 0x1;
479 if (battery->sbs->manager_present) {
480 result = acpi_smbus_read(battery->sbs->hc, SMBUS_READ_WORD,
492 acpi_smbus_write(battery->sbs->hc, SMBUS_WRITE_WORD,
518 static int acpi_battery_add(struct acpi_sbs *sbs, int id)
520 struct acpi_battery *battery = &sbs->battery[id];
525 battery->sbs = sbs;
543 battery->bat = power_supply_register(&sbs->device->dev,
557 ACPI_SBS_DEVICE_NAME, acpi_device_bid(sbs->device),
562 static void acpi_battery_remove(struct acpi_sbs *sbs, int id)
564 struct acpi_battery *battery = &sbs->battery[id];
573 static int acpi_charger_add(struct acpi_sbs *sbs)
576 struct power_supply_config psy_cfg = { .drv_data = sbs, };
578 result = acpi_ac_get_present(sbs);
582 sbs->charger_exists = 1;
583 sbs->charger = power_supply_register(&sbs->device->dev,
585 if (IS_ERR(sbs->charger)) {
586 result = PTR_ERR(sbs->charger);
587 sbs->charger = NULL;
590 ACPI_SBS_DEVICE_NAME, acpi_device_bid(sbs->device),
591 ACPI_AC_DIR_NAME, sbs->charger_present ? "on-line" : "off-line");
596 static void acpi_charger_remove(struct acpi_sbs *sbs)
598 if (sbs->charger)
599 power_supply_unregister(sbs->charger);
605 struct acpi_sbs *sbs = context;
607 u8 saved_charger_state = sbs->charger_present;
610 if (sbs->charger_exists) {
611 acpi_ac_get_present(sbs);
612 if (sbs->charger_present != saved_charger_state)
613 kobject_uevent(&sbs->charger->dev.kobj, KOBJ_CHANGE);
616 if (sbs->manager_present) {
618 if (!(sbs->batteries_supported & (1 << id)))
620 bat = &sbs->battery[id];
632 struct acpi_sbs *sbs;
636 sbs = kzalloc(sizeof(struct acpi_sbs), GFP_KERNEL);
637 if (!sbs) {
642 mutex_init(&sbs->lock);
644 sbs->hc = acpi_driver_data(acpi_dev_parent(device));
645 sbs->device = device;
648 device->driver_data = sbs;
650 result = acpi_charger_add(sbs);
657 result = acpi_manager_get_info(sbs);
659 sbs->manager_present = 1;
661 if ((sbs->batteries_supported & (1 << id)))
662 acpi_battery_add(sbs, id);
666 if (!sbs->manager_present)
667 acpi_battery_add(sbs, 0);
669 acpi_smbus_register_callback(sbs->hc, acpi_sbs_callback, sbs);
678 struct acpi_sbs *sbs;
683 sbs = acpi_driver_data(device);
684 if (!sbs)
686 mutex_lock(&sbs->lock);
687 acpi_smbus_unregister_callback(sbs->hc);
689 acpi_battery_remove(sbs, id);
690 acpi_charger_remove(sbs);
691 mutex_unlock(&sbs->lock);
692 mutex_destroy(&sbs->lock);
693 kfree(sbs);
699 struct acpi_sbs *sbs;
702 sbs = to_acpi_device(dev)->driver_data;
703 acpi_sbs_callback(sbs);
713 .name = "sbs",