• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/acpi/

Lines Matching refs:sbs

38 #define ACPI_SBS_CLASS			"sbs"
57 ACPI_MODULE_NAME("sbs");
128 .name = "sbs",
171 struct acpi_sbs *sbs;
195 static int acpi_sbs_update_run(struct acpi_sbs *sbs, int id, int data_type);
203 static int acpi_ec_sbs_access(struct acpi_sbs *sbs, u16 addr,
211 static int acpi_ec_sbs_read(struct acpi_sbs *sbs, u8 address, u8 * data)
216 err = ec_read(sbs->base + address, &val);
224 static int acpi_ec_sbs_write(struct acpi_sbs *sbs, u8 address, u8 data)
228 err = ec_write(sbs->base + address, data);
233 acpi_ec_sbs_access(struct acpi_sbs *sbs, u16 addr,
249 acpi_ec_sbs_write(sbs, ACPI_EC_SMB_CMD, command);
251 acpi_ec_sbs_write(sbs, ACPI_EC_SMB_DATA, data->word);
252 acpi_ec_sbs_write(sbs, ACPI_EC_SMB_DATA + 1,
258 acpi_ec_sbs_write(sbs, ACPI_EC_SMB_CMD, command);
261 acpi_ec_sbs_write(sbs, ACPI_EC_SMB_BCNT, len);
263 acpi_ec_sbs_write(sbs, ACPI_EC_SMB_DATA + i,
274 acpi_ec_sbs_write(sbs, ACPI_EC_SMB_ADDR, addr << 1);
275 acpi_ec_sbs_write(sbs, ACPI_EC_SMB_PRTCL, protocol);
277 acpi_ec_sbs_read(sbs, ACPI_EC_SMB_STS, temp);
281 acpi_ec_sbs_read(sbs, ACPI_EC_SMB_STS, temp);
285 acpi_ec_sbs_read(sbs, ACPI_EC_SMB_STS, temp);
301 acpi_ec_sbs_read(sbs, ACPI_EC_SMB_DATA, temp);
302 acpi_ec_sbs_read(sbs, ACPI_EC_SMB_DATA + 1, temp + 1);
308 acpi_ec_sbs_read(sbs, ACPI_EC_SMB_BCNT, &len);
311 acpi_ec_sbs_read(sbs, ACPI_EC_SMB_DATA + i,
325 acpi_sbs_read_word(struct acpi_sbs *sbs, int addr, int func, u16 * word)
330 result = acpi_ec_sbs_access(sbs, addr,
344 acpi_sbs_read_str(struct acpi_sbs *sbs, int addr, int func, char *str)
349 result = acpi_ec_sbs_access(sbs, addr,
364 acpi_sbs_write_word(struct acpi_sbs *sbs, int addr, int func, int word)
371 result = acpi_ec_sbs_access(sbs, addr,
382 static int sbs_zombie(struct acpi_sbs *sbs)
384 return (sbs->zombie);
387 static int sbs_mutex_lock(struct acpi_sbs *sbs)
389 if (sbs_zombie(sbs)) {
392 mutex_lock(&sbs->mutex);
396 static void sbs_mutex_unlock(struct acpi_sbs *sbs)
398 mutex_unlock(&sbs->mutex);
405 static int acpi_check_update_proc(struct acpi_sbs *sbs)
410 sbs->update_proc_flg = 0;
413 if (sbs->update_proc_flg == 0) {
415 acpi_sbs_update_time, sbs);
421 sbs->update_proc_flg = 1;
453 result = acpi_sbs_read_word(battery->sbs,
469 struct acpi_sbs *sbs = battery->sbs;
474 if (sbs->sbsm_present) {
481 acpi_sbs_read_word(sbs, ACPI_SBSM_SMBUS_ADDR, 0x01, &state);
490 acpi_sbs_write_word(sbs, ACPI_SBSM_SMBUS_ADDR, 0x01, foo);
502 static int acpi_sbsm_get_info(struct acpi_sbs *sbs)
507 result = acpi_sbs_read_word(sbs, ACPI_SBSM_SMBUS_ADDR, 0x04,
515 sbs->sbsm_batteries_supported = battery_system_info & 0x000f;
524 struct acpi_sbs *sbs = battery->sbs;
529 result = acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x03,
538 result = acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x10,
546 result = acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x18,
555 result = acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x19,
563 result = acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x1a,
599 result = acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x1c,
607 result = acpi_sbs_read_str(sbs, ACPI_SB_SMBUS_ADDR, 0x20,
615 result = acpi_sbs_read_str(sbs, ACPI_SB_SMBUS_ADDR, 0x21,
623 result = acpi_sbs_read_str(sbs, ACPI_SB_SMBUS_ADDR, 0x22,
637 struct acpi_sbs *sbs = battery->sbs;
640 result = acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x09,
648 result = acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x0a,
656 result = acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x0f,
664 result = acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x16,
678 struct acpi_sbs *sbs = battery->sbs;
681 result = acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x01,
697 struct acpi_sbs *sbs = battery->sbs;
713 acpi_sbs_read_word(sbs, ACPI_SB_SMBUS_ADDR, 0x03,
722 acpi_sbs_write_word(sbs, ACPI_SB_SMBUS_ADDR, 0x01,
732 result = acpi_sbs_write_word(sbs, ACPI_SB_SMBUS_ADDR, 0x01, foo);
746 struct acpi_sbs *sbs = battery->sbs;
754 result = acpi_sbs_read_word(sbs,
767 result = acpi_sbs_write_word(sbs,
775 result = acpi_sbs_read_word(sbs,
830 static int acpi_ac_get_present(struct acpi_sbs *sbs)
835 result = acpi_sbs_read_word(sbs, ACPI_SBC_SMBUS_ADDR, 0x13,
844 sbs->ac.ac_present = (charger_status & 0x8000) >> 15;
941 struct acpi_sbs *sbs = battery->sbs;
945 if (sbs_mutex_lock(sbs)) {
949 result = acpi_check_update_proc(sbs);
954 result = acpi_sbs_update_run(sbs, battery->id, DATA_TYPE_INFO);
1005 sbs_mutex_unlock(sbs);
1018 struct acpi_sbs *sbs = battery->sbs;
1023 if (sbs_mutex_lock(sbs)) {
1027 result = acpi_check_update_proc(sbs);
1032 result = acpi_sbs_update_run(sbs, battery->id, DATA_TYPE_STATE);
1085 sbs_mutex_unlock(sbs);
1098 struct acpi_sbs *sbs = battery->sbs;
1102 if (sbs_mutex_lock(sbs)) {
1106 result = acpi_check_update_proc(sbs);
1111 result = acpi_sbs_update_run(sbs, battery->id, DATA_TYPE_ALARM);
1140 sbs_mutex_unlock(sbs);
1151 struct acpi_sbs *sbs = battery->sbs;
1155 if (sbs_mutex_lock(sbs)) {
1159 result = acpi_check_update_proc(sbs);
1199 sbs_mutex_unlock(sbs);
1244 struct acpi_sbs *sbs = seq->private;
1247 if (sbs_mutex_lock(sbs)) {
1252 result = acpi_sbs_update_run(sbs, -1, DATA_TYPE_AC_STATE);
1260 sbs->ac.ac_present ? "on-line" : "off-line");
1262 sbs_mutex_unlock(sbs);
1286 static int acpi_battery_add(struct acpi_sbs *sbs, int id)
1293 battery = &sbs->battery[id];
1299 battery->sbs = sbs;
1343 ACPI_SBS_DEVICE_NAME, acpi_device_bid(sbs->device), dir_name,
1344 sbs->battery->battery_present ? "present" : "absent");
1350 static void acpi_battery_remove(struct acpi_sbs *sbs, int id)
1353 if (sbs->battery[id].battery_entry) {
1354 acpi_sbs_generic_remove_fs(&(sbs->battery[id].battery_entry),
1359 static int acpi_ac_add(struct acpi_sbs *sbs)
1363 result = acpi_ac_get_present(sbs);
1370 result = acpi_sbs_generic_add_fs(&sbs->ac_entry,
1373 NULL, &acpi_ac_state_fops, NULL, sbs);
1381 ACPI_SBS_DEVICE_NAME, acpi_device_bid(sbs->device),
1382 ACPI_AC_DIR_NAME, sbs->ac.ac_present ? "on-line" : "off-line");
1389 static void acpi_ac_remove(struct acpi_sbs *sbs)
1392 if (sbs->ac_entry) {
1393 acpi_sbs_generic_remove_fs(&sbs->ac_entry, acpi_ac_dir);
1402 static int acpi_sbs_update_run(struct acpi_sbs *sbs, int id, int data_type)
1417 if (sbs_zombie(sbs)) {
1427 if (sbs->run_cnt % cnt != 0) {
1432 sbs->run_cnt++;
1438 old_ac_present = sbs->ac.ac_present;
1440 result = acpi_ac_get_present(sbs);
1446 new_ac_present = sbs->ac.ac_present;
1449 if (sbs->run_cnt == 1 && data_type == DATA_TYPE_COMMON) {
1454 result = acpi_sbs_generate_event(sbs->device,
1476 battery = &sbs->battery[id];
1511 if (sbs_zombie(sbs)) {
1527 if (sbs_zombie(sbs)) {
1543 if (sbs_zombie(sbs)) {
1560 if (sbs_zombie(sbs)) {
1570 result = acpi_sbs_generate_event(sbs->device,
1590 struct acpi_sbs *sbs = data;
1595 if (sbs_mutex_lock(sbs))
1598 result = acpi_sbs_update_run(sbs, -1, DATA_TYPE_COMMON);
1604 if (sbs_zombie(sbs)) {
1609 if (timer_pending(&sbs->update_timer))
1610 del_timer(&sbs->update_timer);
1614 if (timer_pending(&sbs->update_timer)) {
1615 mod_timer(&sbs->update_timer, delay);
1617 sbs->update_timer.data = (unsigned long)data;
1618 sbs->update_timer.function = acpi_sbs_update_time_run;
1619 sbs->update_timer.expires = delay;
1620 add_timer(&sbs->update_timer);
1626 sbs_mutex_unlock(sbs);
1631 struct acpi_sbs *sbs = NULL;
1645 sbs = kzalloc(sizeof(struct acpi_sbs), GFP_KERNEL);
1646 if (!sbs) {
1652 mutex_init(&sbs->mutex);
1654 sbs_mutex_lock(sbs);
1656 sbs->base = (val & 0xff00ull) >> 8;
1657 sbs->device = device;
1661 acpi_driver_data(device) = sbs;
1663 result = acpi_ac_add(sbs);
1676 result = acpi_sbsm_get_info(sbs);
1682 sbs->sbsm_present = 1;
1685 if (sbs->sbsm_present == 0) {
1686 result = acpi_battery_add(sbs, 0);
1694 if ((sbs->sbsm_batteries_supported & (1 << id))) {
1695 result = acpi_battery_add(sbs, id);
1705 sbs->handle = device->handle;
1707 init_timer(&sbs->update_timer);
1708 result = acpi_check_update_proc(sbs);
1714 sbs_mutex_unlock(sbs);
1729 struct acpi_sbs *sbs;
1736 sbs = acpi_driver_data(device);
1737 if (!sbs) {
1741 sbs_mutex_lock(sbs);
1743 sbs->zombie = 1;
1744 del_timer_sync(&sbs->update_timer);
1746 del_timer_sync(&sbs->update_timer);
1749 acpi_battery_remove(sbs, id);
1752 acpi_ac_remove(sbs);
1754 sbs_mutex_unlock(sbs);
1756 mutex_destroy(&sbs->mutex);
1758 kfree(sbs);
1777 struct acpi_sbs *sbs;
1782 sbs = device->driver_data;
1784 sbs->run_cnt = 0;