Lines Matching +full:boot +full:- +full:method

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * asus-laptop.c - Asus Laptop Support
5 * Copyright (C) 2002-2005 Julien Lerouge, 2003-2006 Karol Kozimor
6 * Copyright (C) 2006-2007 Corentin Chary
13 * Pontus Fuchs - Helper functions, cleanup
14 * Johann Wiesner - Small compile fixes
15 * John Belmonte - ACPI code for Toshiba laptop was a good starting point.
16 * Eric Burghard - LED display support for W1N
17 * Josh Green - Light Sens support
18 * Thomas Tuttle - His first patch for led support was very helpful
19 * Sam Lin - GPS support
35 #include <linux/input/sparse-keymap.h>
71 MODULE_PARM_DESC(wled_type, "Set the wled type on boot "
76 MODULE_PARM_DESC(bled_type, "Set the bled type on boot "
82 static int wimax_status = -1;
83 static int wwan_status = -1;
87 MODULE_PARM_DESC(wlan_status, "Set the wireless status on boot "
88 "(0 = disabled, 1 = enabled, -1 = don't do anything). "
89 "default is -1");
92 MODULE_PARM_DESC(bluetooth_status, "Set the wireless status on boot "
93 "(0 = disabled, 1 = enabled, -1 = don't do anything). "
94 "default is -1");
97 MODULE_PARM_DESC(wimax_status, "Set the wireless status on boot "
98 "(0 = disabled, 1 = enabled, -1 = don't do anything). "
99 "default is -1");
102 MODULE_PARM_DESC(wwan_status, "Set the wireless status on boot "
103 "(0 = disabled, 1 = enabled, -1 = don't do anything). "
104 "default is -1");
107 MODULE_PARM_DESC(als_status, "Set the ALS status on boot "
218 const char *method; member
354 * This function evaluates an ACPI method, given an int as parameter, the
355 * method is searched within the scope of the handle, can be NULL. The output
356 * of the method is written is output, which can also be NULL
358 * returns 0 if write is successful, -1 else.
360 static int write_acpi_int_ret(acpi_handle handle, const char *method, int val, in write_acpi_int_ret() argument
368 return -1; in write_acpi_int_ret()
375 status = acpi_evaluate_object(handle, (char *)method, &params, output); in write_acpi_int_ret()
379 return -1; in write_acpi_int_ret()
382 static int write_acpi_int(acpi_handle handle, const char *method, int val) in write_acpi_int() argument
384 return write_acpi_int_ret(handle, method, val, NULL); in write_acpi_int()
387 static int acpi_check_handle(acpi_handle handle, const char *method, in acpi_check_handle() argument
392 if (method == NULL) in acpi_check_handle()
393 return -ENODEV; in acpi_check_handle()
396 status = acpi_get_handle(handle, (char *)method, in acpi_check_handle()
401 status = acpi_get_handle(handle, (char *)method, in acpi_check_handle()
407 pr_warn("Error finding %s\n", method); in acpi_check_handle()
408 return -ENODEV; in acpi_check_handle()
415 return !strcmp(asus->name, DEVICE_NAME_PEGA) && in asus_check_pega_lucid()
416 !acpi_check_handle(asus->handle, METHOD_PEGA_ENABLE, NULL) && in asus_check_pega_lucid()
417 !acpi_check_handle(asus->handle, METHOD_PEGA_DISABLE, NULL) && in asus_check_pega_lucid()
418 !acpi_check_handle(asus->handle, METHOD_PEGA_READ, NULL); in asus_check_pega_lucid()
423 char *method = enable ? METHOD_PEGA_ENABLE : METHOD_PEGA_DISABLE; in asus_pega_lucid_set() local
424 return write_acpi_int(asus->handle, method, unit); in asus_pega_lucid_set()
427 static int pega_acc_axis(struct asus_laptop *asus, int curr, char *method) in pega_acc_axis() argument
434 status = acpi_evaluate_integer(asus->handle, method, NULL, &val); in pega_acc_axis()
441 * between (for example) -1 and 0 could be read as in pega_acc_axis()
443 delta = abs(curr - (short)val); in pega_acc_axis()
447 return clamp_val((short)val, -PEGA_ACC_CLAMP, PEGA_ACC_CLAMP); in pega_acc_axis()
452 struct device *parent = input->dev.parent; in pega_accel_poll()
459 if (!asus->pega_acc_live) { in pega_accel_poll()
460 asus->pega_acc_live = true; in pega_accel_poll()
468 asus->pega_acc_x = pega_acc_axis(asus, asus->pega_acc_x, METHOD_XLRX); in pega_accel_poll()
469 asus->pega_acc_y = pega_acc_axis(asus, asus->pega_acc_y, METHOD_XLRY); in pega_accel_poll()
470 asus->pega_acc_z = pega_acc_axis(asus, asus->pega_acc_z, METHOD_XLRZ); in pega_accel_poll()
475 input_report_abs(input, ABS_X, -asus->pega_acc_x); in pega_accel_poll()
476 input_report_abs(input, ABS_Y, -asus->pega_acc_y); in pega_accel_poll()
477 input_report_abs(input, ABS_Z, asus->pega_acc_z); in pega_accel_poll()
483 if (asus->pega_accel_poll) { in pega_accel_exit()
484 input_unregister_device(asus->pega_accel_poll); in pega_accel_exit()
485 asus->pega_accel_poll = NULL; in pega_accel_exit()
494 if (!asus->is_pega_lucid) in pega_accel_init()
495 return -ENODEV; in pega_accel_init()
497 if (acpi_check_handle(asus->handle, METHOD_XLRX, NULL) || in pega_accel_init()
498 acpi_check_handle(asus->handle, METHOD_XLRY, NULL) || in pega_accel_init()
499 acpi_check_handle(asus->handle, METHOD_XLRZ, NULL)) in pega_accel_init()
500 return -ENODEV; in pega_accel_init()
504 return -ENOMEM; in pega_accel_init()
506 input->name = PEGA_ACCEL_DESC; in pega_accel_init()
507 input->phys = PEGA_ACCEL_NAME "/input0"; in pega_accel_init()
508 input->dev.parent = &asus->platform_device->dev; in pega_accel_init()
509 input->id.bustype = BUS_HOST; in pega_accel_init()
512 -PEGA_ACC_CLAMP, PEGA_ACC_CLAMP, 0, 0); in pega_accel_init()
514 -PEGA_ACC_CLAMP, PEGA_ACC_CLAMP, 0, 0); in pega_accel_init()
516 -PEGA_ACC_CLAMP, PEGA_ACC_CLAMP, 0, 0); in pega_accel_init()
530 asus->pega_accel_poll = input; in pega_accel_init()
539 static int asus_led_set(struct asus_laptop *asus, const char *method, in asus_led_set() argument
542 if (!strcmp(method, METHOD_MLED)) in asus_led_set()
544 else if (!strcmp(method, METHOD_GLED)) in asus_led_set()
549 return write_acpi_int(asus->handle, method, value); in asus_led_set()
560 struct asus_laptop *asus = led->asus; in asus_led_cdev_set()
562 led->wk = !!value; in asus_led_cdev_set()
563 queue_work(asus->led_workqueue, &led->work); in asus_led_cdev_set()
569 struct asus_laptop *asus = led->asus; in asus_led_cdev_update()
571 asus_led_set(asus, led->method, led->wk); in asus_led_cdev_update()
576 return led_cdev->brightness; in asus_led_cdev_get()
594 rv = acpi_evaluate_integer(asus->handle, METHOD_KBD_LIGHT_GET, in asus_kled_lvl()
598 return -ENODEV; in asus_kled_lvl()
610 if (write_acpi_int(asus->handle, METHOD_KBD_LIGHT_SET, kblv)) { in asus_kled_set()
612 return -EINVAL; in asus_kled_set()
621 struct asus_laptop *asus = led->asus; in asus_kled_cdev_set()
623 led->wk = value; in asus_kled_cdev_set()
624 queue_work(asus->led_workqueue, &led->work); in asus_kled_cdev_set()
630 struct asus_laptop *asus = led->asus; in asus_kled_cdev_update()
632 asus_kled_set(asus, led->wk); in asus_kled_cdev_update()
638 struct asus_laptop *asus = led->asus; in asus_kled_cdev_get()
645 led_classdev_unregister(&asus->wled.led); in asus_led_exit()
646 led_classdev_unregister(&asus->bled.led); in asus_led_exit()
647 led_classdev_unregister(&asus->mled.led); in asus_led_exit()
648 led_classdev_unregister(&asus->tled.led); in asus_led_exit()
649 led_classdev_unregister(&asus->pled.led); in asus_led_exit()
650 led_classdev_unregister(&asus->rled.led); in asus_led_exit()
651 led_classdev_unregister(&asus->gled.led); in asus_led_exit()
652 led_classdev_unregister(&asus->kled.led); in asus_led_exit()
654 if (asus->led_workqueue) { in asus_led_exit()
655 destroy_workqueue(asus->led_workqueue); in asus_led_exit()
656 asus->led_workqueue = NULL; in asus_led_exit()
663 const char *name, const char *method) in asus_led_register() argument
665 struct led_classdev *led_cdev = &led->led; in asus_led_register()
667 if (!method || acpi_check_handle(asus->handle, method, NULL)) in asus_led_register()
670 led->asus = asus; in asus_led_register()
671 led->method = method; in asus_led_register()
673 INIT_WORK(&led->work, asus_led_cdev_update); in asus_led_register()
674 led_cdev->name = name; in asus_led_register()
675 led_cdev->brightness_set = asus_led_cdev_set; in asus_led_register()
676 led_cdev->brightness_get = asus_led_cdev_get; in asus_led_register()
677 led_cdev->max_brightness = 1; in asus_led_register()
678 return led_classdev_register(&asus->platform_device->dev, led_cdev); in asus_led_register()
689 if (asus->is_pega_lucid) in asus_led_init()
698 asus->led_workqueue = create_singlethread_workqueue("led_workqueue"); in asus_led_init()
699 if (!asus->led_workqueue) in asus_led_init()
700 return -ENOMEM; in asus_led_init()
702 if (asus->wled_type == TYPE_LED) in asus_led_init()
703 r = asus_led_register(asus, &asus->wled, "asus::wlan", in asus_led_init()
707 if (asus->bled_type == TYPE_LED) in asus_led_init()
708 r = asus_led_register(asus, &asus->bled, "asus::bluetooth", in asus_led_init()
712 r = asus_led_register(asus, &asus->mled, "asus::mail", METHOD_MLED); in asus_led_init()
715 r = asus_led_register(asus, &asus->tled, "asus::touchpad", METHOD_TLED); in asus_led_init()
718 r = asus_led_register(asus, &asus->rled, "asus::record", METHOD_RLED); in asus_led_init()
721 r = asus_led_register(asus, &asus->pled, "asus::phone", METHOD_PLED); in asus_led_init()
724 r = asus_led_register(asus, &asus->gled, "asus::gaming", METHOD_GLED); in asus_led_init()
727 if (!acpi_check_handle(asus->handle, METHOD_KBD_LIGHT_SET, NULL) && in asus_led_init()
728 !acpi_check_handle(asus->handle, METHOD_KBD_LIGHT_GET, NULL)) { in asus_led_init()
729 struct asus_led *led = &asus->kled; in asus_led_init()
730 struct led_classdev *cdev = &led->led; in asus_led_init()
732 led->asus = asus; in asus_led_init()
734 INIT_WORK(&led->work, asus_kled_cdev_update); in asus_led_init()
735 cdev->name = "asus::kbd_backlight"; in asus_led_init()
736 cdev->brightness_set = asus_kled_cdev_set; in asus_led_init()
737 cdev->brightness_get = asus_kled_cdev_get; in asus_led_init()
738 cdev->max_brightness = 3; in asus_led_init()
739 r = led_classdev_register(&asus->platform_device->dev, cdev); in asus_led_init()
756 rv = acpi_evaluate_integer(asus->handle, METHOD_BRIGHTNESS_GET, in asus_read_brightness()
770 if (write_acpi_int(asus->handle, METHOD_BRIGHTNESS_SET, value)) { in asus_set_brightness()
772 return -EIO; in asus_set_brightness()
779 int value = bd->props.brightness; in update_bl_status()
791 struct backlight_device *bd = asus->backlight_device; in asus_backlight_notify()
792 int old = bd->props.brightness; in asus_backlight_notify()
804 if (acpi_check_handle(asus->handle, METHOD_BRIGHTNESS_GET, NULL) || in asus_backlight_init()
805 acpi_check_handle(asus->handle, METHOD_BRIGHTNESS_SET, NULL)) in asus_backlight_init()
813 &asus->platform_device->dev, asus, in asus_backlight_init()
817 asus->backlight_device = NULL; in asus_backlight_init()
821 asus->backlight_device = bd; in asus_backlight_init()
822 bd->props.brightness = asus_read_brightness(bd); in asus_backlight_init()
823 bd->props.power = BACKLIGHT_POWER_ON; in asus_backlight_init()
830 backlight_device_unregister(asus->backlight_device); in asus_backlight_exit()
831 asus->backlight_device = NULL; in asus_backlight_exit()
858 len += sysfs_emit_at(page, len, "Model reference : %s\n", asus->name); in infos_show()
860 * The SFUN method probably allows the original driver to get the list in infos_show()
862 * bit signifies that the laptop is equipped with a Wi-Fi MiniPCI card. in infos_show()
865 rv = acpi_evaluate_integer(asus->handle, "SFUN", NULL, &temp); in infos_show()
870 * The HWRS method return informations about the hardware. in infos_show()
877 rv = acpi_evaluate_integer(asus->handle, "HWRS", NULL, &temp); in infos_show()
882 * Another value for userspace: the ASYM method returns 0x02 for in infos_show()
885 * Note: since not all the laptops provide this method, errors are in infos_show()
888 rv = acpi_evaluate_integer(asus->handle, "ASYM", NULL, &temp); in infos_show()
892 if (asus->dsdt_info) { in infos_show()
893 snprintf(buf, 16, "%d", asus->dsdt_info->length); in infos_show()
895 snprintf(buf, 16, "%d", asus->dsdt_info->checksum); in infos_show()
897 snprintf(buf, 16, "%d", asus->dsdt_info->revision); in infos_show()
899 snprintf(buf, 7, "%s", asus->dsdt_info->oem_id); in infos_show()
901 snprintf(buf, 9, "%s", asus->dsdt_info->oem_table_id); in infos_show()
903 snprintf(buf, 16, "%x", asus->dsdt_info->oem_revision); in infos_show()
905 snprintf(buf, 5, "%s", asus->dsdt_info->asl_compiler_id); in infos_show()
907 snprintf(buf, 16, "%x", asus->dsdt_info->asl_compiler_revision); in infos_show()
917 const char *method) in sysfs_acpi_set() argument
925 if (write_acpi_int(asus->handle, method, value)) in sysfs_acpi_set()
926 return -ENODEV; in sysfs_acpi_set()
938 return sysfs_emit(buf, "0x%08x\n", asus->ledd_status); in ledd_show()
951 if (write_acpi_int(asus->handle, METHOD_LEDD, value)) { in ledd_store()
953 return -ENODEV; in ledd_store()
956 asus->ledd_status = (u32) value; in ledd_store()
969 if (!asus->have_rsts) in asus_wireless_status()
970 return (asus->wireless_status & mask) ? 1 : 0; in asus_wireless_status()
972 rv = acpi_evaluate_integer(asus->handle, METHOD_WL_STATUS, in asus_wireless_status()
976 return -EINVAL; in asus_wireless_status()
986 if (write_acpi_int(asus->handle, METHOD_WLAN, !!status)) { in asus_wlan_set()
988 return -EIO; in asus_wlan_set()
1015 if (write_acpi_int(asus->handle, METHOD_BLUETOOTH, !!status)) { in asus_bluetooth_set()
1017 return -EIO; in asus_bluetooth_set()
1045 if (write_acpi_int(asus->handle, METHOD_WIMAX, !!status)) { in asus_wimax_set()
1047 return -EIO; in asus_wimax_set()
1074 if (write_acpi_int(asus->handle, METHOD_WWAN, !!status)) { in asus_wwan_set()
1076 return -EIO; in asus_wwan_set()
1104 if (write_acpi_int(asus->handle, METHOD_SWITCH_DISPLAY, value)) in asus_set_display()
1111 * the LCD output, 2 should do for CRT, 4 for TV-Out and 8 for DVI.
1138 if (asus->is_pega_lucid) { in asus_als_switch()
1143 ret = write_acpi_int(asus->handle, METHOD_ALS_CONTROL, value); in asus_als_switch()
1148 asus->light_switch = value; in asus_als_switch()
1156 return sysfs_emit(buf, "%d\n", asus->light_switch); in ls_switch_show()
1177 if (write_acpi_int(asus->handle, METHOD_ALS_LEVEL, value)) in asus_als_level()
1179 asus->light_level = value; in asus_als_level()
1187 return sysfs_emit(buf, "%d\n", asus->light_level); in ls_level_show()
1211 int err = write_acpi_int_ret(asus->handle, METHOD_PEGA_READ, arg, in pega_int_read()
1215 if (obj && obj->type == ACPI_TYPE_INTEGER) in pega_int_read()
1216 *result = obj->integer.value; in pega_int_read()
1218 err = -EIO; in pega_int_read()
1246 rv = acpi_evaluate_integer(asus->handle, METHOD_GPS_STATUS, in asus_gps_status()
1250 return -ENODEV; in asus_gps_status()
1259 if (write_acpi_int(asus->handle, meth, 0x02)) in asus_gps_switch()
1260 return -ENODEV; in asus_gps_switch()
1285 rfkill_set_sw_state(asus->gps.rfkill, !value); in gps_store()
1307 struct asus_laptop *asus = rfk->asus; in asus_rfkill_set()
1309 if (rfk->control_id == WL_RSTS) in asus_rfkill_set()
1311 else if (rfk->control_id == BT_RSTS) in asus_rfkill_set()
1313 else if (rfk->control_id == WM_RSTS) in asus_rfkill_set()
1315 else if (rfk->control_id == WW_RSTS) in asus_rfkill_set()
1318 return -EINVAL; in asus_rfkill_set()
1327 if (!rfk->rfkill) in asus_rfkill_terminate()
1330 rfkill_unregister(rfk->rfkill); in asus_rfkill_terminate()
1331 rfkill_destroy(rfk->rfkill); in asus_rfkill_terminate()
1332 rfk->rfkill = NULL; in asus_rfkill_terminate()
1337 asus_rfkill_terminate(&asus->wwan); in asus_rfkill_exit()
1338 asus_rfkill_terminate(&asus->bluetooth); in asus_rfkill_exit()
1339 asus_rfkill_terminate(&asus->wlan); in asus_rfkill_exit()
1340 asus_rfkill_terminate(&asus->gps); in asus_rfkill_exit()
1349 rfk->control_id = control_id; in asus_rfkill_setup()
1350 rfk->asus = asus; in asus_rfkill_setup()
1351 rfk->rfkill = rfkill_alloc(name, &asus->platform_device->dev, in asus_rfkill_setup()
1353 if (!rfk->rfkill) in asus_rfkill_setup()
1354 return -EINVAL; in asus_rfkill_setup()
1356 result = rfkill_register(rfk->rfkill); in asus_rfkill_setup()
1358 rfkill_destroy(rfk->rfkill); in asus_rfkill_setup()
1359 rfk->rfkill = NULL; in asus_rfkill_setup()
1369 if (asus->is_pega_lucid) in asus_rfkill_init()
1370 return -ENODEV; in asus_rfkill_init()
1372 if (!acpi_check_handle(asus->handle, METHOD_GPS_ON, NULL) && in asus_rfkill_init()
1373 !acpi_check_handle(asus->handle, METHOD_GPS_OFF, NULL) && in asus_rfkill_init()
1374 !acpi_check_handle(asus->handle, METHOD_GPS_STATUS, NULL)) in asus_rfkill_init()
1375 result = asus_rfkill_setup(asus, &asus->gps, "asus-gps", in asus_rfkill_init()
1376 -1, RFKILL_TYPE_GPS, in asus_rfkill_init()
1382 if (!acpi_check_handle(asus->handle, METHOD_WLAN, NULL) && in asus_rfkill_init()
1383 asus->wled_type == TYPE_RFKILL) in asus_rfkill_init()
1384 result = asus_rfkill_setup(asus, &asus->wlan, "asus-wlan", in asus_rfkill_init()
1390 if (!acpi_check_handle(asus->handle, METHOD_BLUETOOTH, NULL) && in asus_rfkill_init()
1391 asus->bled_type == TYPE_RFKILL) in asus_rfkill_init()
1392 result = asus_rfkill_setup(asus, &asus->bluetooth, in asus_rfkill_init()
1393 "asus-bluetooth", BT_RSTS, in asus_rfkill_init()
1399 if (!acpi_check_handle(asus->handle, METHOD_WWAN, NULL)) in asus_rfkill_init()
1400 result = asus_rfkill_setup(asus, &asus->wwan, "asus-wwan", in asus_rfkill_init()
1406 if (!acpi_check_handle(asus->handle, METHOD_WIMAX, NULL)) in asus_rfkill_init()
1407 result = asus_rfkill_setup(asus, &asus->wimax, "asus-wimax", in asus_rfkill_init()
1424 int ret = asus_pega_lucid_set(rfk->asus, rfk->control_id, !blocked); in pega_rfkill_set()
1443 if(!asus->is_pega_lucid) in pega_rfkill_init()
1444 return -ENODEV; in pega_rfkill_init()
1446 ret = pega_rfkill_setup(asus, &asus->wlan, "pega-wlan", in pega_rfkill_init()
1451 ret = pega_rfkill_setup(asus, &asus->bluetooth, "pega-bt", in pega_rfkill_init()
1456 ret = pega_rfkill_setup(asus, &asus->wwan, "pega-wwan", in pega_rfkill_init()
1471 if (!asus->inputdev) in asus_input_notify()
1473 if (!sparse_keymap_report_event(asus->inputdev, event, 1, true)) in asus_input_notify()
1484 return -ENOMEM; in asus_input_init()
1486 input->name = "Asus Laptop extra buttons"; in asus_input_init()
1487 input->phys = ASUS_LAPTOP_FILE "/input0"; in asus_input_init()
1488 input->id.bustype = BUS_HOST; in asus_input_init()
1489 input->dev.parent = &asus->platform_device->dev; in asus_input_init()
1502 asus->inputdev = input; in asus_input_init()
1512 if (asus->inputdev) in asus_input_exit()
1513 input_unregister_device(asus->inputdev); in asus_input_exit()
1514 asus->inputdev = NULL; in asus_input_exit()
1526 count = asus->event_count[event % 128]++; in asus_acpi_notify()
1527 acpi_bus_generate_netlink_event(asus->device->pnp.device_class, in asus_acpi_notify()
1528 dev_name(&asus->device->dev), event, in asus_acpi_notify()
1539 if (asus->backlight_device != NULL) { in asus_acpi_notify()
1547 if (asus->pega_accel_poll && event == 0xEA) { in asus_acpi_notify()
1548 kobject_uevent(&asus->pega_accel_poll->dev.kobj, KOBJ_CHANGE); in asus_acpi_notify()
1576 acpi_handle handle = asus->handle; in asus_sysfs_is_visible()
1579 if (asus->is_pega_lucid) { in asus_sysfs_is_visible()
1588 return supported ? attr->mode : 0; in asus_sysfs_is_visible()
1603 !acpi_check_handle(asus->handle, METHOD_WIMAX, NULL); in asus_sysfs_is_visible()
1606 supported = !acpi_check_handle(asus->handle, METHOD_WWAN, NULL); in asus_sysfs_is_visible()
1616 supported = asus->is_pega_lucid; in asus_sysfs_is_visible()
1625 return supported ? attr->mode : 0; in asus_sysfs_is_visible()
1638 asus->platform_device = platform_device_alloc(ASUS_LAPTOP_FILE, PLATFORM_DEVID_NONE); in asus_platform_init()
1639 if (!asus->platform_device) in asus_platform_init()
1640 return -ENOMEM; in asus_platform_init()
1641 platform_set_drvdata(asus->platform_device, asus); in asus_platform_init()
1643 result = platform_device_add(asus->platform_device); in asus_platform_init()
1647 result = sysfs_create_group(&asus->platform_device->dev.kobj, in asus_platform_init()
1655 platform_device_del(asus->platform_device); in asus_platform_init()
1657 platform_device_put(asus->platform_device); in asus_platform_init()
1663 sysfs_remove_group(&asus->platform_device->dev.kobj, &asus_attr_group); in asus_platform_exit()
1664 platform_device_unregister(asus->platform_device); in asus_platform_exit()
1675 * method, we can make all the detection we want, and modify the asus_laptop
1689 * before doing anything ACPI-specific. Should we encounter a machine, in asus_laptop_get_info()
1693 status = acpi_get_table(ACPI_SIG_DSDT, 1, &asus->dsdt_info); in asus_laptop_get_info()
1698 if (write_acpi_int_ret(asus->handle, "INIT", 0, &buffer)) { in asus_laptop_get_info()
1700 return -ENODEV; in asus_laptop_get_info()
1705 acpi_evaluate_integer(asus->handle, "BSTS", NULL, &bsts_result); in asus_laptop_get_info()
1713 if (write_acpi_int(asus->handle, "CWAP", wapf)) in asus_laptop_get_info()
1723 switch (model->type) { in asus_laptop_get_info()
1725 string = model->string.pointer; in asus_laptop_get_info()
1728 string = model->buffer.pointer; in asus_laptop_get_info()
1735 asus->name = kstrdup(string, GFP_KERNEL); in asus_laptop_get_info()
1736 if (!asus->name) { in asus_laptop_get_info()
1738 return -ENOMEM; in asus_laptop_get_info()
1744 if (!acpi_check_handle(asus->handle, METHOD_WL_STATUS, NULL)) in asus_laptop_get_info()
1745 asus->have_rsts = true; in asus_laptop_get_info()
1756 result = acpi_bus_get_status(asus->device); in asus_acpi_init()
1759 if (!asus->device->status.present) { in asus_acpi_init()
1761 return -ENODEV; in asus_acpi_init()
1769 asus->bled_type = TYPE_LED; in asus_acpi_init()
1771 asus->bled_type = TYPE_RFKILL; in asus_acpi_init()
1774 asus->wled_type = TYPE_LED; in asus_acpi_init()
1776 asus->wled_type = TYPE_RFKILL; in asus_acpi_init()
1791 if (!acpi_check_handle(asus->handle, METHOD_KBD_LIGHT_SET, NULL)) in asus_acpi_init()
1795 asus->ledd_status = 0xFFF; in asus_acpi_init()
1798 asus->light_switch = !!als_status; in asus_acpi_init()
1799 asus->light_level = 5; /* level 5 for sensor sensitivity */ in asus_acpi_init()
1801 if (asus->is_pega_lucid) { in asus_acpi_init()
1802 asus_als_switch(asus, asus->light_switch); in asus_acpi_init()
1803 } else if (!acpi_check_handle(asus->handle, METHOD_ALS_CONTROL, NULL) && in asus_acpi_init()
1804 !acpi_check_handle(asus->handle, METHOD_ALS_LEVEL, NULL)) { in asus_acpi_init()
1805 asus_als_switch(asus, asus->light_switch); in asus_acpi_init()
1806 asus_als_level(asus, asus->light_level); in asus_acpi_init()
1822 wlan_status = -1; in asus_dmi_check()
1836 return -ENOMEM; in asus_acpi_add()
1837 asus->handle = device->handle; in asus_acpi_add()
1840 device->driver_data = asus; in asus_acpi_add()
1841 asus->device = device; in asus_acpi_add()
1851 * device. It is used as a parent for the sub-devices below. in asus_acpi_add()
1853 asus->is_pega_lucid = asus_check_pega_lucid(asus); in asus_acpi_add()
1873 if (result && result != -ENODEV) in asus_acpi_add()
1877 if (result && result != -ENODEV) in asus_acpi_add()
1881 if (result && result != -ENODEV) in asus_acpi_add()
1916 kfree(asus->name); in asus_acpi_remove()
1951 result = -ENODEV; in asus_laptop_init()