• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/platform/x86/

Lines Matching refs:asus

2  *  asus-laptop.c - Asus Laptop Support
201 struct asus_laptop *asus;
346 static int asus_led_set(struct asus_laptop *asus, const char *method,
356 return write_acpi_int(asus->handle, method, value);
367 struct asus_laptop *asus = led->asus;
370 queue_work(asus->led_workqueue, &led->work);
376 struct asus_laptop *asus = led->asus;
378 asus_led_set(asus, led->method, led->wk);
389 static int asus_kled_lvl(struct asus_laptop *asus)
401 rv = acpi_evaluate_integer(asus->handle, METHOD_KBD_LIGHT_GET,
410 static int asus_kled_set(struct asus_laptop *asus, int kblv)
417 if (write_acpi_int(asus->handle, METHOD_KBD_LIGHT_SET, kblv)) {
428 struct asus_laptop *asus = led->asus;
431 queue_work(asus->led_workqueue, &led->work);
437 struct asus_laptop *asus = led->asus;
439 asus_kled_set(asus, led->wk);
445 struct asus_laptop *asus = led->asus;
447 return asus_kled_lvl(asus);
450 static void asus_led_exit(struct asus_laptop *asus)
452 if (asus->mled.led.dev)
453 led_classdev_unregister(&asus->mled.led);
454 if (asus->tled.led.dev)
455 led_classdev_unregister(&asus->tled.led);
456 if (asus->pled.led.dev)
457 led_classdev_unregister(&asus->pled.led);
458 if (asus->rled.led.dev)
459 led_classdev_unregister(&asus->rled.led);
460 if (asus->gled.led.dev)
461 led_classdev_unregister(&asus->gled.led);
462 if (asus->kled.led.dev)
463 led_classdev_unregister(&asus->kled.led);
464 if (asus->led_workqueue) {
465 destroy_workqueue(asus->led_workqueue);
466 asus->led_workqueue = NULL;
471 static int asus_led_register(struct asus_laptop *asus,
477 if (!method || acpi_check_handle(asus->handle, method, NULL))
480 led->asus = asus;
488 return led_classdev_register(&asus->platform_device->dev, led_cdev);
491 static int asus_led_init(struct asus_laptop *asus)
501 asus->led_workqueue = create_singlethread_workqueue("led_workqueue");
502 if (!asus->led_workqueue)
505 r = asus_led_register(asus, &asus->mled, "asus::mail", METHOD_MLED);
508 r = asus_led_register(asus, &asus->tled, "asus::touchpad", METHOD_TLED);
511 r = asus_led_register(asus, &asus->rled, "asus::record", METHOD_RLED);
514 r = asus_led_register(asus, &asus->pled, "asus::phone", METHOD_PLED);
517 r = asus_led_register(asus, &asus->gled, "asus::gaming", METHOD_GLED);
520 if (!acpi_check_handle(asus->handle, METHOD_KBD_LIGHT_SET, NULL) &&
521 !acpi_check_handle(asus->handle, METHOD_KBD_LIGHT_GET, NULL)) {
522 struct asus_led *led = &asus->kled;
525 led->asus = asus;
528 cdev->name = "asus::kbd_backlight";
532 r = led_classdev_register(&asus->platform_device->dev, cdev);
536 asus_led_exit(asus);
543 static int asus_lcd_status(struct asus_laptop *asus)
545 return asus->lcd_state;
548 static int asus_lcd_set(struct asus_laptop *asus, int value)
555 if (lcd == asus_lcd_status(asus))
569 asus->lcd_state = lcd;
573 static void lcd_blank(struct asus_laptop *asus, int blank)
575 struct backlight_device *bd = asus->backlight_device;
577 asus->lcd_state = (blank == FB_BLANK_UNBLANK);
587 struct asus_laptop *asus = bl_get_data(bd);
591 rv = acpi_evaluate_integer(asus->handle, METHOD_BRIGHTNESS_GET,
601 struct asus_laptop *asus = bl_get_data(bd);
603 if (write_acpi_int(asus->handle, METHOD_BRIGHTNESS_SET, value)) {
612 struct asus_laptop *asus = bl_get_data(bd);
621 return asus_lcd_set(asus, value);
629 static int asus_backlight_notify(struct asus_laptop *asus)
631 struct backlight_device *bd = asus->backlight_device;
639 static int asus_backlight_init(struct asus_laptop *asus)
642 struct device *dev = &asus->platform_device->dev;
645 if (!acpi_check_handle(asus->handle, METHOD_BRIGHTNESS_GET, NULL) &&
646 !acpi_check_handle(asus->handle, METHOD_BRIGHTNESS_SET, NULL) &&
652 asus, &asusbl_ops, &props);
654 pr_err("Could not register asus backlight device\n");
655 asus->backlight_device = NULL;
659 asus->backlight_device = bd;
668 static void asus_backlight_exit(struct asus_laptop *asus)
670 if (asus->backlight_device)
671 backlight_device_unregister(asus->backlight_device);
672 asus->backlight_device = NULL;
687 struct asus_laptop *asus = dev_get_drvdata(dev);
699 len += sprintf(page + len, "Model reference : %s\n", asus->name);
706 rv = acpi_evaluate_integer(asus->handle, "SFUN", NULL, &temp);
716 rv = acpi_evaluate_integer(asus->handle, "HRWS", NULL, &temp);
727 rv = acpi_evaluate_integer(asus->handle, "ASYM", NULL, &temp);
731 if (asus->dsdt_info) {
732 snprintf(buf, 16, "%d", asus->dsdt_info->length);
734 snprintf(buf, 16, "%d", asus->dsdt_info->checksum);
736 snprintf(buf, 16, "%d", asus->dsdt_info->revision);
738 snprintf(buf, 7, "%s", asus->dsdt_info->oem_id);
740 snprintf(buf, 9, "%s", asus->dsdt_info->oem_table_id);
742 snprintf(buf, 16, "%x", asus->dsdt_info->oem_revision);
744 snprintf(buf, 5, "%s", asus->dsdt_info->asl_compiler_id);
746 snprintf(buf, 16, "%x", asus->dsdt_info->asl_compiler_revision);
764 static ssize_t sysfs_acpi_set(struct asus_laptop *asus,
775 if (write_acpi_int(asus->handle, method, value))
786 struct asus_laptop *asus = dev_get_drvdata(dev);
788 return sprintf(buf, "0x%08x\n", asus->ledd_status);
794 struct asus_laptop *asus = dev_get_drvdata(dev);
799 if (write_acpi_int(asus->handle, METHOD_LEDD, value)) {
803 asus->ledd_status = (u32) value;
811 static int asus_wireless_status(struct asus_laptop *asus, int mask)
816 if (!asus->have_rsts)
817 return (asus->wireless_status & mask) ? 1 : 0;
819 rv = acpi_evaluate_integer(asus->handle, METHOD_WL_STATUS,
831 static int asus_wlan_set(struct asus_laptop *asus, int status)
833 if (write_acpi_int(asus->handle, METHOD_WLAN, !!status)) {
843 struct asus_laptop *asus = dev_get_drvdata(dev);
845 return sprintf(buf, "%d\n", asus_wireless_status(asus, WL_RSTS));
851 struct asus_laptop *asus = dev_get_drvdata(dev);
853 return sysfs_acpi_set(asus, buf, count, METHOD_WLAN);
859 static int asus_bluetooth_set(struct asus_laptop *asus, int status)
861 if (write_acpi_int(asus->handle, METHOD_BLUETOOTH, !!status)) {
871 struct asus_laptop *asus = dev_get_drvdata(dev);
873 return sprintf(buf, "%d\n", asus_wireless_status(asus, BT_RSTS));
880 struct asus_laptop *asus = dev_get_drvdata(dev);
882 return sysfs_acpi_set(asus, buf, count, METHOD_BLUETOOTH);
888 static void asus_set_display(struct asus_laptop *asus, int value)
891 if (write_acpi_int(asus->handle, METHOD_SWITCH_DISPLAY, value))
896 static int read_display(struct asus_laptop *asus)
924 struct asus_laptop *asus = dev_get_drvdata(dev);
928 return sprintf(buf, "%d\n", read_display(asus));
941 struct asus_laptop *asus = dev_get_drvdata(dev);
946 asus_set_display(asus, value);
953 static void asus_als_switch(struct asus_laptop *asus, int value)
955 if (write_acpi_int(asus->handle, METHOD_ALS_CONTROL, value))
957 asus->light_switch = value;
963 struct asus_laptop *asus = dev_get_drvdata(dev);
965 return sprintf(buf, "%d\n", asus->light_switch);
971 struct asus_laptop *asus = dev_get_drvdata(dev);
976 asus_als_switch(asus, value ? 1 : 0);
981 static void asus_als_level(struct asus_laptop *asus, int value)
983 if (write_acpi_int(asus->handle, METHOD_ALS_LEVEL, value))
985 asus->light_level = value;
991 struct asus_laptop *asus = dev_get_drvdata(dev);
993 return sprintf(buf, "%d\n", asus->light_level);
999 struct asus_laptop *asus = dev_get_drvdata(dev);
1006 asus_als_level(asus, value);
1015 static int asus_gps_status(struct asus_laptop *asus)
1020 rv = acpi_evaluate_integer(asus->handle, METHOD_GPS_STATUS,
1029 static int asus_gps_switch(struct asus_laptop *asus, int status)
1033 if (write_acpi_int(asus->handle, meth, 0x02))
1041 struct asus_laptop *asus = dev_get_drvdata(dev);
1043 return sprintf(buf, "%d\n", asus_gps_status(asus));
1049 struct asus_laptop *asus = dev_get_drvdata(dev);
1056 ret = asus_gps_switch(asus, !!value);
1059 rfkill_set_sw_state(asus->gps_rfkill, !value);
1068 struct asus_laptop *asus = data;
1070 return asus_gps_switch(asus, !blocked);
1077 static void asus_rfkill_exit(struct asus_laptop *asus)
1079 if (asus->gps_rfkill) {
1080 rfkill_unregister(asus->gps_rfkill);
1081 rfkill_destroy(asus->gps_rfkill);
1082 asus->gps_rfkill = NULL;
1086 static int asus_rfkill_init(struct asus_laptop *asus)
1090 if (acpi_check_handle(asus->handle, METHOD_GPS_ON, NULL) ||
1091 acpi_check_handle(asus->handle, METHOD_GPS_OFF, NULL) ||
1092 acpi_check_handle(asus->handle, METHOD_GPS_STATUS, NULL))
1095 asus->gps_rfkill = rfkill_alloc("asus-gps", &asus->platform_device->dev,
1097 &asus_gps_rfkill_ops, asus);
1098 if (!asus->gps_rfkill)
1101 result = rfkill_register(asus->gps_rfkill);
1103 rfkill_destroy(asus->gps_rfkill);
1104 asus->gps_rfkill = NULL;
1113 static void asus_input_notify(struct asus_laptop *asus, int event)
1115 if (asus->inputdev)
1116 sparse_keymap_report_event(asus->inputdev, event, 1, true);
1119 static int asus_input_init(struct asus_laptop *asus)
1132 input->dev.parent = &asus->platform_device->dev;
1133 input_set_drvdata(input, asus);
1146 asus->inputdev = input;
1156 static void asus_input_exit(struct asus_laptop *asus)
1158 if (asus->inputdev) {
1159 sparse_keymap_free(asus->inputdev);
1160 input_unregister_device(asus->inputdev);
1169 struct asus_laptop *asus = acpi_driver_data(device);
1177 lcd_blank(asus, FB_BLANK_UNBLANK);
1179 lcd_blank(asus, FB_BLANK_POWERDOWN);
1182 count = asus->event_count[event % 128]++;
1183 acpi_bus_generate_proc_event(asus->device, event, count);
1184 acpi_bus_generate_netlink_event(asus->device->pnp.device_class,
1185 dev_name(&asus->device->dev), event,
1192 if (asus->backlight_device != NULL) {
1194 asus_backlight_notify(asus);
1198 asus_input_notify(asus, event);
1211 static void asus_sysfs_exit(struct asus_laptop *asus)
1213 struct platform_device *device = asus->platform_device;
1225 static int asus_sysfs_init(struct asus_laptop *asus)
1227 struct platform_device *device = asus->platform_device;
1234 if (!acpi_check_handle(asus->handle, METHOD_WLAN, NULL)) {
1240 if (!acpi_check_handle(asus->handle, METHOD_BLUETOOTH, NULL)) {
1246 if (!acpi_check_handle(asus->handle, METHOD_SWITCH_DISPLAY, NULL)) {
1252 if (!acpi_check_handle(asus->handle, METHOD_LEDD, NULL)) {
1258 if (!acpi_check_handle(asus->handle, METHOD_ALS_CONTROL, NULL) &&
1259 !acpi_check_handle(asus->handle, METHOD_ALS_LEVEL, NULL)) {
1268 if (!acpi_check_handle(asus->handle, METHOD_GPS_ON, NULL) &&
1269 !acpi_check_handle(asus->handle, METHOD_GPS_OFF, NULL) &&
1270 !acpi_check_handle(asus->handle, METHOD_GPS_STATUS, NULL)) {
1279 static int asus_platform_init(struct asus_laptop *asus)
1283 asus->platform_device = platform_device_alloc(ASUS_LAPTOP_FILE, -1);
1284 if (!asus->platform_device)
1286 platform_set_drvdata(asus->platform_device, asus);
1288 err = platform_device_add(asus->platform_device);
1292 err = asus_sysfs_init(asus);
1298 asus_sysfs_exit(asus);
1299 platform_device_del(asus->platform_device);
1301 platform_device_put(asus->platform_device);
1305 static void asus_platform_exit(struct asus_laptop *asus)
1307 asus_sysfs_exit(asus);
1308 platform_device_unregister(asus->platform_device);
1343 static int asus_laptop_get_info(struct asus_laptop *asus)
1358 status = acpi_get_table(ACPI_SIG_DSDT, 1, &asus->dsdt_info);
1363 if (write_acpi_int_ret(asus->handle, "INIT", 0, &buffer)) {
1370 acpi_evaluate_integer(asus->handle, "BSTS", NULL, &bsts_result);
1378 if (write_acpi_int(asus->handle, "CWAP", wapf))
1400 asus->name = kstrdup(string, GFP_KERNEL);
1401 if (!asus->name) {
1415 acpi_evaluate_integer(asus->handle, "HRWS", NULL, &hwrs_result);
1419 if (!acpi_check_handle(asus->handle, METHOD_WL_STATUS, NULL))
1420 asus->have_rsts = true;
1433 static int __devinit asus_acpi_init(struct asus_laptop *asus)
1437 result = acpi_bus_get_status(asus->device);
1440 if (!asus->device->status.present) {
1445 result = asus_laptop_get_info(asus);
1451 asus_bluetooth_set(asus, !!bluetooth_status);
1454 asus_wlan_set(asus, !!wlan_status);
1457 if (!acpi_check_handle(asus->handle, METHOD_KBD_LIGHT_SET, NULL))
1458 asus_kled_set(asus, 1);
1461 asus->ledd_status = 0xFFF;
1464 asus->light_switch = 0; /* Default to light sensor disabled */
1465 asus->light_level = 5; /* level 5 for sensor sensitivity */
1467 if (!acpi_check_handle(asus->handle, METHOD_ALS_CONTROL, NULL) &&
1468 !acpi_check_handle(asus->handle, METHOD_ALS_LEVEL, NULL)) {
1469 asus_als_switch(asus, asus->light_switch);
1470 asus_als_level(asus, asus->light_level);
1473 asus->lcd_state = 1; /* LCD should be on when the module load */
1479 struct asus_laptop *asus;
1484 asus = kzalloc(sizeof(struct asus_laptop), GFP_KERNEL);
1485 if (!asus)
1487 asus->handle = device->handle;
1490 device->driver_data = asus;
1491 asus->device = device;
1493 result = asus_acpi_init(asus);
1501 result = asus_platform_init(asus);
1506 result = asus_backlight_init(asus);
1512 result = asus_input_init(asus);
1516 result = asus_led_init(asus);
1520 result = asus_rfkill_init(asus);
1528 asus_led_exit(asus);
1530 asus_input_exit(asus);
1532 asus_backlight_exit(asus);
1534 asus_platform_exit(asus);
1536 kfree(asus->name);
1537 kfree(asus);
1544 struct asus_laptop *asus = acpi_driver_data(device);
1546 asus_backlight_exit(asus);
1547 asus_rfkill_exit(asus);
1548 asus_led_exit(asus);
1549 asus_input_exit(asus);
1550 asus_platform_exit(asus);
1552 kfree(asus->name);
1553 kfree(asus);