• Home
  • Raw
  • Download

Lines Matching full:pcc

53  * 			add /proc/acpi/pcc/brightness interface for HAL access
162 #define ACPI_PCC_CLASS "pcc"
283 static int acpi_pcc_write_sset(struct pcc_acpi *pcc, int func, int val) in acpi_pcc_write_sset() argument
297 status = acpi_evaluate_object(pcc->handle, METHOD_HKEY_SSET, in acpi_pcc_write_sset()
318 static int acpi_pcc_retrieve_biosdata(struct pcc_acpi *pcc) in acpi_pcc_retrieve_biosdata() argument
325 status = acpi_evaluate_object(pcc->handle, METHOD_HKEY_SINF, NULL, in acpi_pcc_retrieve_biosdata()
339 if (pcc->num_sifr < hkey->package.count) { in acpi_pcc_retrieve_biosdata()
341 pcc->num_sifr, hkey->package.count); in acpi_pcc_retrieve_biosdata()
349 pcc->sinf[i] = element->integer.value; in acpi_pcc_retrieve_biosdata()
353 pcc->sinf[hkey->package.count] = -1; in acpi_pcc_retrieve_biosdata()
369 struct pcc_acpi *pcc = bl_get_data(bd); in bl_get() local
371 if (!acpi_pcc_retrieve_biosdata(pcc)) in bl_get()
374 return pcc->sinf[SINF_AC_CUR_BRIGHT]; in bl_get()
379 struct pcc_acpi *pcc = bl_get_data(bd); in bl_set_status() local
383 if (!acpi_pcc_retrieve_biosdata(pcc)) in bl_set_status()
386 if (bright < pcc->sinf[SINF_AC_MIN_BRIGHT]) in bl_set_status()
387 bright = pcc->sinf[SINF_AC_MIN_BRIGHT]; in bl_set_status()
389 if (bright < pcc->sinf[SINF_DC_MIN_BRIGHT]) in bl_set_status()
390 bright = pcc->sinf[SINF_DC_MIN_BRIGHT]; in bl_set_status()
392 if (bright < pcc->sinf[SINF_AC_MIN_BRIGHT] || in bl_set_status()
393 bright > pcc->sinf[SINF_AC_MAX_BRIGHT]) in bl_set_status()
396 rc = acpi_pcc_write_sset(pcc, SINF_AC_CUR_BRIGHT, bright); in bl_set_status()
400 return acpi_pcc_write_sset(pcc, SINF_DC_CUR_BRIGHT, bright); in bl_set_status()
507 struct pcc_acpi *pcc = acpi_driver_data(acpi); in numbatt_show() local
509 if (!acpi_pcc_retrieve_biosdata(pcc)) in numbatt_show()
512 return sysfs_emit(buf, "%u\n", pcc->sinf[SINF_NUM_BATTERIES]); in numbatt_show()
519 struct pcc_acpi *pcc = acpi_driver_data(acpi); in lcdtype_show() local
521 if (!acpi_pcc_retrieve_biosdata(pcc)) in lcdtype_show()
524 return sysfs_emit(buf, "%u\n", pcc->sinf[SINF_LCD_TYPE]); in lcdtype_show()
531 struct pcc_acpi *pcc = acpi_driver_data(acpi); in mute_show() local
533 if (!acpi_pcc_retrieve_biosdata(pcc)) in mute_show()
536 return sysfs_emit(buf, "%u\n", pcc->sinf[SINF_MUTE]); in mute_show()
543 struct pcc_acpi *pcc = acpi_driver_data(acpi); in mute_store() local
550 acpi_pcc_write_sset(pcc, SINF_MUTE, val); in mute_store()
551 pcc->mute = val; in mute_store()
561 struct pcc_acpi *pcc = acpi_driver_data(acpi); in sticky_key_show() local
563 if (!acpi_pcc_retrieve_biosdata(pcc)) in sticky_key_show()
566 return sysfs_emit(buf, "%u\n", pcc->sticky_key); in sticky_key_show()
573 struct pcc_acpi *pcc = acpi_driver_data(acpi); in sticky_key_store() local
580 acpi_pcc_write_sset(pcc, SINF_STICKY_KEY, val); in sticky_key_store()
581 pcc->sticky_key = val; in sticky_key_store()
591 struct pcc_acpi *pcc = acpi_driver_data(acpi); in eco_mode_show() local
594 if (!acpi_pcc_retrieve_biosdata(pcc)) in eco_mode_show()
597 switch (pcc->sinf[SINF_ECO_MODE]) { in eco_mode_show()
614 struct pcc_acpi *pcc = acpi_driver_data(acpi); in eco_mode_store() local
634 pcc->sinf[SINF_ECO_MODE] = 0; in eco_mode_store()
635 pcc->eco_mode = 0; in eco_mode_store()
639 pcc->sinf[SINF_ECO_MODE] = 1; in eco_mode_store()
640 pcc->eco_mode = 1; in eco_mode_store()
661 struct pcc_acpi *pcc = acpi_driver_data(acpi); in ac_brightness_show() local
663 if (!acpi_pcc_retrieve_biosdata(pcc)) in ac_brightness_show()
666 return sysfs_emit(buf, "%u\n", pcc->sinf[SINF_AC_CUR_BRIGHT]); in ac_brightness_show()
673 struct pcc_acpi *pcc = acpi_driver_data(acpi); in ac_brightness_store() local
680 acpi_pcc_write_sset(pcc, SINF_AC_CUR_BRIGHT, val); in ac_brightness_store()
681 pcc->ac_brightness = val; in ac_brightness_store()
691 struct pcc_acpi *pcc = acpi_driver_data(acpi); in dc_brightness_show() local
693 if (!acpi_pcc_retrieve_biosdata(pcc)) in dc_brightness_show()
696 return sysfs_emit(buf, "%u\n", pcc->sinf[SINF_DC_CUR_BRIGHT]); in dc_brightness_show()
703 struct pcc_acpi *pcc = acpi_driver_data(acpi); in dc_brightness_store() local
710 acpi_pcc_write_sset(pcc, SINF_DC_CUR_BRIGHT, val); in dc_brightness_store()
711 pcc->dc_brightness = val; in dc_brightness_store()
721 struct pcc_acpi *pcc = acpi_driver_data(acpi); in current_brightness_show() local
723 if (!acpi_pcc_retrieve_biosdata(pcc)) in current_brightness_show()
726 return sysfs_emit(buf, "%u\n", pcc->sinf[SINF_CUR_BRIGHT]); in current_brightness_show()
733 struct pcc_acpi *pcc = acpi_driver_data(acpi); in current_brightness_store() local
741 err = acpi_pcc_write_sset(pcc, SINF_CUR_BRIGHT, val); in current_brightness_store()
742 pcc->current_brightness = val; in current_brightness_store()
785 struct pcc_acpi *pcc = acpi_driver_data(acpi); in pcc_sysfs_is_visible() local
788 return (pcc->num_sifr > SINF_MUTE) ? attr->mode : 0; in pcc_sysfs_is_visible()
791 return (pcc->num_sifr > SINF_ECO_MODE) ? attr->mode : 0; in pcc_sysfs_is_visible()
794 return (pcc->num_sifr > SINF_CUR_BRIGHT) ? attr->mode : 0; in pcc_sysfs_is_visible()
822 static void acpi_pcc_generate_keyinput(struct pcc_acpi *pcc) in acpi_pcc_generate_keyinput() argument
824 struct input_dev *hotk_input_dev = pcc->input_dev; in acpi_pcc_generate_keyinput()
830 rc = acpi_evaluate_integer(pcc->handle, METHOD_HKEY_QUERY, in acpi_pcc_generate_keyinput()
862 struct pcc_acpi *pcc = acpi_driver_data(device); in acpi_pcc_hotkey_notify() local
866 acpi_pcc_generate_keyinput(pcc); in acpi_pcc_hotkey_notify()
882 static int pcc_register_optd_notifier(struct pcc_acpi *pcc, char *node) in pcc_register_optd_notifier() argument
892 pcc_optd_notify, pcc); in pcc_register_optd_notifier()
901 static void pcc_unregister_optd_notifier(struct pcc_acpi *pcc, char *node) in pcc_unregister_optd_notifier() argument
918 static int acpi_pcc_init_input(struct pcc_acpi *pcc) in acpi_pcc_init_input() argument
946 pcc->input_dev = input_dev; in acpi_pcc_init_input()
959 struct pcc_acpi *pcc; in acpi_pcc_hotkey_resume() local
964 pcc = acpi_driver_data(to_acpi_device(dev)); in acpi_pcc_hotkey_resume()
965 if (!pcc) in acpi_pcc_hotkey_resume()
968 if (pcc->num_sifr > SINF_MUTE) in acpi_pcc_hotkey_resume()
969 acpi_pcc_write_sset(pcc, SINF_MUTE, pcc->mute); in acpi_pcc_hotkey_resume()
970 if (pcc->num_sifr > SINF_ECO_MODE) in acpi_pcc_hotkey_resume()
971 acpi_pcc_write_sset(pcc, SINF_ECO_MODE, pcc->eco_mode); in acpi_pcc_hotkey_resume()
972 acpi_pcc_write_sset(pcc, SINF_STICKY_KEY, pcc->sticky_key); in acpi_pcc_hotkey_resume()
973 acpi_pcc_write_sset(pcc, SINF_AC_CUR_BRIGHT, pcc->ac_brightness); in acpi_pcc_hotkey_resume()
974 acpi_pcc_write_sset(pcc, SINF_DC_CUR_BRIGHT, pcc->dc_brightness); in acpi_pcc_hotkey_resume()
975 if (pcc->num_sifr > SINF_CUR_BRIGHT) in acpi_pcc_hotkey_resume()
976 acpi_pcc_write_sset(pcc, SINF_CUR_BRIGHT, pcc->current_brightness); in acpi_pcc_hotkey_resume()
985 struct pcc_acpi *pcc; in acpi_pcc_hotkey_add() local
994 * pcc->sinf is expected to at least have the AC+DC brightness entries. in acpi_pcc_hotkey_add()
1008 pcc = kzalloc(sizeof(struct pcc_acpi), GFP_KERNEL); in acpi_pcc_hotkey_add()
1009 if (!pcc) { in acpi_pcc_hotkey_add()
1010 pr_err("Couldn't allocate mem for pcc"); in acpi_pcc_hotkey_add()
1014 pcc->sinf = kcalloc(num_sifr + 1, sizeof(u32), GFP_KERNEL); in acpi_pcc_hotkey_add()
1015 if (!pcc->sinf) { in acpi_pcc_hotkey_add()
1020 pcc->device = device; in acpi_pcc_hotkey_add()
1021 pcc->handle = device->handle; in acpi_pcc_hotkey_add()
1022 pcc->num_sifr = num_sifr; in acpi_pcc_hotkey_add()
1023 device->driver_data = pcc; in acpi_pcc_hotkey_add()
1027 result = acpi_pcc_init_input(pcc); in acpi_pcc_hotkey_add()
1033 if (!acpi_pcc_retrieve_biosdata(pcc)) { in acpi_pcc_hotkey_add()
1043 props.max_brightness = pcc->sinf[SINF_AC_MAX_BRIGHT]; in acpi_pcc_hotkey_add()
1045 pcc->backlight = backlight_device_register("panasonic", NULL, pcc, in acpi_pcc_hotkey_add()
1047 if (IS_ERR(pcc->backlight)) { in acpi_pcc_hotkey_add()
1048 result = PTR_ERR(pcc->backlight); in acpi_pcc_hotkey_add()
1053 pcc->backlight->props.brightness = pcc->sinf[SINF_AC_CUR_BRIGHT]; in acpi_pcc_hotkey_add()
1057 acpi_pcc_write_sset(pcc, SINF_STICKY_KEY, 0); in acpi_pcc_hotkey_add()
1058 pcc->sticky_key = 0; in acpi_pcc_hotkey_add()
1060 pcc->ac_brightness = pcc->sinf[SINF_AC_CUR_BRIGHT]; in acpi_pcc_hotkey_add()
1061 pcc->dc_brightness = pcc->sinf[SINF_DC_CUR_BRIGHT]; in acpi_pcc_hotkey_add()
1062 if (pcc->num_sifr > SINF_MUTE) in acpi_pcc_hotkey_add()
1063 pcc->mute = pcc->sinf[SINF_MUTE]; in acpi_pcc_hotkey_add()
1064 if (pcc->num_sifr > SINF_ECO_MODE) in acpi_pcc_hotkey_add()
1065 pcc->eco_mode = pcc->sinf[SINF_ECO_MODE]; in acpi_pcc_hotkey_add()
1066 if (pcc->num_sifr > SINF_CUR_BRIGHT) in acpi_pcc_hotkey_add()
1067 pcc->current_brightness = pcc->sinf[SINF_CUR_BRIGHT]; in acpi_pcc_hotkey_add()
1076 pcc->platform = platform_device_register_simple("panasonic", in acpi_pcc_hotkey_add()
1078 if (IS_ERR(pcc->platform)) { in acpi_pcc_hotkey_add()
1079 result = PTR_ERR(pcc->platform); in acpi_pcc_hotkey_add()
1082 result = device_create_file(&pcc->platform->dev, in acpi_pcc_hotkey_add()
1084 pcc_register_optd_notifier(pcc, "\\_SB.PCI0.EHCI.ERHB.OPTD"); in acpi_pcc_hotkey_add()
1088 pcc->platform = NULL; in acpi_pcc_hotkey_add()
1095 platform_device_unregister(pcc->platform); in acpi_pcc_hotkey_add()
1097 backlight_device_unregister(pcc->backlight); in acpi_pcc_hotkey_add()
1099 input_unregister_device(pcc->input_dev); in acpi_pcc_hotkey_add()
1101 kfree(pcc->sinf); in acpi_pcc_hotkey_add()
1103 kfree(pcc); in acpi_pcc_hotkey_add()
1110 struct pcc_acpi *pcc = acpi_driver_data(device); in acpi_pcc_hotkey_remove() local
1112 if (!device || !pcc) in acpi_pcc_hotkey_remove()
1117 if (pcc->platform) { in acpi_pcc_hotkey_remove()
1118 device_remove_file(&pcc->platform->dev, &dev_attr_cdpower); in acpi_pcc_hotkey_remove()
1119 platform_device_unregister(pcc->platform); in acpi_pcc_hotkey_remove()
1121 pcc_unregister_optd_notifier(pcc, "\\_SB.PCI0.EHCI.ERHB.OPTD"); in acpi_pcc_hotkey_remove()
1125 backlight_device_unregister(pcc->backlight); in acpi_pcc_hotkey_remove()
1127 input_unregister_device(pcc->input_dev); in acpi_pcc_hotkey_remove()
1129 kfree(pcc->sinf); in acpi_pcc_hotkey_remove()
1130 kfree(pcc); in acpi_pcc_hotkey_remove()