• Home
  • Raw
  • Download

Lines Matching +full:hall +full:- +full:enable

4  *  Copyright (C) 2007-2009	Carlos Corbacho <carlos@strangeworlds.co.uk>
7 * Copyright (C) 2005-2007 E.M. Smith
8 * Copyright (C) 2007-2008 Carlos Corbacho <cathectic@gmail.com>
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
43 #include <linux/input/sparse-keymap.h>
52 * Meaning is unknown - this number is required for writing to ACPI for AMW0
79 #define AMW0_GUID1 "67C3371D-95A3-4C37-BB61-DD47B491DAAB"
80 #define AMW0_GUID2 "431F16ED-0C2B-444C-B267-27DEB140CF9C"
81 #define WMID_GUID1 "6AF4F258-B401-42FD-BE91-3D4AC2D7C0D3"
82 #define WMID_GUID2 "95764E09-FB56-4E83-B31A-37761F60994A"
83 #define WMID_GUID3 "61EF69EA-865C-4BC3-A502-A0DEBA0CB531"
88 #define ACERWMID_EVENT_GUID "676AA15E-6A47-4D9F-A2CC-1E6D18D14026"
90 MODULE_ALIAS("wmi:67C3371D-95A3-4C37-BB61-DD47B491DAAB");
91 MODULE_ALIAS("wmi:6AF4F258-B401-42FD-BE91-3D4AC2D7C0D3");
92 MODULE_ALIAS("wmi:676AA15E-6A47-4D9F-A2CC-1E6D18D14026");
169 * Bit[7]: Hall Sensor Application Status
247 static int mailled = -1;
248 static int brightness = -1;
249 static int threeg = -1;
265 MODULE_PARM_DESC(ec_raw_mode, "Enable EC raw mode");
284 /* Each low-level interface must define at least some of the following */
304 * Some laptops require us to directly access the EC to either enable or query
322 if (quirks->mailled) in set_quirks()
323 interface->capability |= ACER_CAP_MAILLED; in set_quirks()
325 if (quirks->brightness) in set_quirks()
326 interface->capability |= ACER_CAP_BRIGHTNESS; in set_quirks()
331 quirks = dmi->driver_data; in dmi_matched()
339 .brightness = -1,
359 /* The Aspire One has a dummy ACPI-WMI interface - disable it */
402 * that those machines are supported by acer-wmi driver.
517 * This quirk list is for those non-acer machines that have AMW0_GUID1
518 * but supported by acer-wmi in past days. Keeping this quirk list here
520 * here anymore. Those non-acer machines should be supported by
571 .ident = "Lenovo Ideapad S205-10382JG",
580 .ident = "Lenovo Ideapad S205-1038DPG",
593 interface->capability &= ~ACER_CAP_BRIGHTNESS; in video_set_backlight_video_vendor()
675 return interface->capability & cap; in has_cap()
716 switch (quirks->mailled) { in AMW0_get_u32()
726 switch (quirks->wireless) { in AMW0_get_u32()
754 switch (quirks->bluetooth) { in AMW0_get_u32()
764 switch (quirks->brightness) { in AMW0_get_u32()
806 switch (quirks->brightness) { in AMW0_set_u32()
835 if (obj && obj->type == ACPI_TYPE_BUFFER && in AMW0_find_mailled()
836 obj->buffer.length == sizeof(struct wmab_ret)) { in AMW0_find_mailled()
837 ret = *((struct wmab_ret *) obj->buffer.pointer); in AMW0_find_mailled()
844 interface->capability |= ACER_CAP_MAILLED; in AMW0_find_mailled()
855 { "SNY5001", 0}, /* sony-laptop in charge */
864 for (id = norfkill_ids; id->id[0]; id++) in AMW0_set_cap_acpi_check_device()
865 if (acpi_dev_found(id->id)) in AMW0_set_cap_acpi_check_device()
886 interface->capability |= ACER_CAP_WIRELESS; in AMW0_set_capabilities()
901 if (obj && obj->type == ACPI_TYPE_BUFFER && in AMW0_set_capabilities()
902 obj->buffer.length == sizeof(struct wmab_ret)) { in AMW0_set_capabilities()
903 ret = *((struct wmab_ret *) obj->buffer.pointer); in AMW0_set_capabilities()
910 interface->capability |= ACER_CAP_WIRELESS; in AMW0_set_capabilities()
924 if (obj && obj->type == ACPI_TYPE_BUFFER in AMW0_set_capabilities()
925 && obj->buffer.length == sizeof(struct wmab_ret)) { in AMW0_set_capabilities()
926 ret = *((struct wmab_ret *) obj->buffer.pointer); in AMW0_set_capabilities()
933 interface->capability |= ACER_CAP_BLUETOOTH; in AMW0_set_capabilities()
936 * This appears to be safe to enable, since all Wistron based laptops in AMW0_set_capabilities()
940 if (quirks->brightness >= 0) in AMW0_set_capabilities()
941 interface->capability |= ACER_CAP_BRIGHTNESS; in AMW0_set_capabilities()
976 if (obj->type == ACPI_TYPE_BUFFER && in WMI_execute_u32()
977 (obj->buffer.length == sizeof(u32) || in WMI_execute_u32()
978 obj->buffer.length == sizeof(u64))) { in WMI_execute_u32()
979 tmp = *((u32 *) obj->buffer.pointer); in WMI_execute_u32()
980 } else if (obj->type == ACPI_TYPE_INTEGER) { in WMI_execute_u32()
981 tmp = (u32) obj->integer.value; in WMI_execute_u32()
1013 if (quirks->mailled == 1) { in WMID_get_u32()
1058 if (quirks->mailled == 1) { in WMID_set_u32()
1096 else if (obj->type != ACPI_TYPE_BUFFER) { in wmid3_get_device_status()
1100 if (obj->buffer.length != 8) { in wmid3_get_device_status()
1101 pr_warn("Unknown buffer length %d\n", obj->buffer.length); in wmid3_get_device_status()
1106 return_value = *((struct wmid3_gds_return_value *)obj->buffer.pointer); in wmid3_get_device_status()
1110 pr_warn("Get 0x%x Device Status failed: 0x%x - 0x%x\n", in wmid3_get_device_status()
1175 else if (obj->type != ACPI_TYPE_BUFFER) { in wmid3_set_device_status()
1179 if (obj->buffer.length != 8) { in wmid3_set_device_status()
1180 pr_warn("Unknown buffer length %d\n", obj->buffer.length); in wmid3_set_device_status()
1185 return_value = *((struct wmid3_gds_return_value *)obj->buffer.pointer); in wmid3_set_device_status()
1189 pr_warn("Get Current Device Status failed: 0x%x - 0x%x\n", in wmid3_set_device_status()
1206 else if (obj->type != ACPI_TYPE_BUFFER) { in wmid3_set_device_status()
1210 if (obj->buffer.length != 4) { in wmid3_set_device_status()
1211 pr_warn("Unknown buffer length %d\n", obj->buffer.length); in wmid3_set_device_status()
1216 return_value = *((struct wmid3_gds_return_value *)obj->buffer.pointer); in wmid3_set_device_status()
1220 pr_warn("Set Device Status failed: 0x%x - 0x%x\n", in wmid3_set_device_status()
1251 /* We are looking for OEM-specific Type AAh */ in type_aa_dmi_decode()
1252 if (header->type != 0xAA) in type_aa_dmi_decode()
1259 type_aa->commun_func_bitmap); in type_aa_dmi_decode()
1260 commun_func_bitmap = type_aa->commun_func_bitmap; in type_aa_dmi_decode()
1262 if (type_aa->commun_func_bitmap & ACER_WMID3_GDS_WIRELESS) in type_aa_dmi_decode()
1263 interface->capability |= ACER_CAP_WIRELESS; in type_aa_dmi_decode()
1264 if (type_aa->commun_func_bitmap & ACER_WMID3_GDS_THREEG) in type_aa_dmi_decode()
1265 interface->capability |= ACER_CAP_THREEG; in type_aa_dmi_decode()
1266 if (type_aa->commun_func_bitmap & ACER_WMID3_GDS_BLUETOOTH) in type_aa_dmi_decode()
1267 interface->capability |= ACER_CAP_BLUETOOTH; in type_aa_dmi_decode()
1268 if (type_aa->commun_func_bitmap & ACER_WMID3_GDS_RFBTN) { in type_aa_dmi_decode()
1269 interface->capability |= ACER_CAP_RFBTN; in type_aa_dmi_decode()
1273 commun_fn_key_number = type_aa->commun_fn_key_number; in type_aa_dmi_decode()
1289 if (obj->type == ACPI_TYPE_BUFFER && in WMID_set_capabilities()
1290 (obj->buffer.length == sizeof(u32) || in WMID_set_capabilities()
1291 obj->buffer.length == sizeof(u64))) { in WMID_set_capabilities()
1292 devices = *((u32 *) obj->buffer.pointer); in WMID_set_capabilities()
1293 } else if (obj->type == ACPI_TYPE_INTEGER) { in WMID_set_capabilities()
1294 devices = (u32) obj->integer.value; in WMID_set_capabilities()
1306 interface->capability |= ACER_CAP_WIRELESS; in WMID_set_capabilities()
1308 interface->capability |= ACER_CAP_THREEG; in WMID_set_capabilities()
1310 interface->capability |= ACER_CAP_BLUETOOTH; in WMID_set_capabilities()
1328 * Generic Device (interface-independent)
1335 switch (interface->type) { in get_u32()
1364 if (interface->capability & cap) { in set_u32()
1365 switch (interface->type) { in set_u32()
1426 .name = "acer-wmi::mail",
1455 int intensity = bd->props.brightness; in update_bl_status()
1457 if (bd->props.power != FB_BLANK_UNBLANK) in update_bl_status()
1459 if (bd->props.fb_blank != FB_BLANK_UNBLANK) in update_bl_status()
1480 bd = backlight_device_register("acer-wmi", dev, NULL, &acer_bl_ops, in acer_backlight_init()
1490 bd->props.power = FB_BLANK_UNBLANK; in acer_backlight_init()
1491 bd->props.brightness = read_brightness(bd); in acer_backlight_init()
1516 return -1; in acer_gsensor_init()
1533 return -1; in acer_gsensor_event()
1540 return -1; in acer_gsensor_event()
1542 if (out_obj->package.count != 4) in acer_gsensor_event()
1543 return -1; in acer_gsensor_event()
1546 (s16)out_obj->package.elements[0].integer.value); in acer_gsensor_event()
1548 (s16)out_obj->package.elements[1].integer.value); in acer_gsensor_event()
1550 (s16)out_obj->package.elements[2].integer.value); in acer_gsensor_event()
1568 if (quirks->wireless == 3) in acer_rfkill_update()
1598 return -ENODEV; in acer_rfkill_set()
1621 return ERR_PTR(-ENOMEM); in acer_rfkill_register()
1643 "acer-wireless", ACER_CAP_WIRELESS); in acer_rfkill_init()
1652 RFKILL_TYPE_BLUETOOTH, "acer-bluetooth", in acer_rfkill_init()
1662 RFKILL_TYPE_WWAN, "acer-threeg", in acer_rfkill_init()
1736 if (obj->type != ACPI_TYPE_BUFFER) { in acer_wmi_notify()
1737 pr_warn("Unknown response received %d\n", obj->type); in acer_wmi_notify()
1741 if (obj->buffer.length != 8) { in acer_wmi_notify()
1742 pr_warn("Unknown buffer length %d\n", obj->buffer.length); in acer_wmi_notify()
1747 return_value = *((struct event_return_value *)obj->buffer.pointer); in acer_wmi_notify()
1758 pr_warn("Unknown key number - 0x%x\n", in acer_wmi_notify()
1762 switch (key->keycode) { in acer_wmi_notify()
1786 pr_warn("Unknown function number - %d - %d\n", in acer_wmi_notify()
1810 else if (obj->type != ACPI_TYPE_BUFFER) { in wmid3_set_function_mode()
1814 if (obj->buffer.length != 4) { in wmid3_set_function_mode()
1815 pr_warn("Unknown buffer length %d\n", obj->buffer.length); in wmid3_set_function_mode()
1820 *return_value = *((struct func_return_value *)obj->buffer.pointer); in wmid3_set_function_mode()
1841 pr_warn("Enabling EC raw mode failed: 0x%x - 0x%x\n", in acer_wmi_enable_ec_raw()
1865 pr_warn("Enabling Launch Manager failed: 0x%x - 0x%x\n", in acer_wmi_enable_lm()
1887 pr_warn("Enabling RF Button failed: 0x%x - 0x%x\n", in acer_wmi_enable_rf_button()
1929 return -ENODEV; in acer_wmi_get_handle()
1941 interface->capability |= ACER_CAP_ACCEL; in acer_wmi_accel_setup()
1945 return -ENOMEM; in acer_wmi_accel_setup()
1947 acer_wmi_accel_dev->open = acer_gsensor_open; in acer_wmi_accel_setup()
1949 acer_wmi_accel_dev->name = "Acer BMA150 accelerometer"; in acer_wmi_accel_setup()
1950 acer_wmi_accel_dev->phys = "wmi/input1"; in acer_wmi_accel_setup()
1951 acer_wmi_accel_dev->id.bustype = BUS_HOST; in acer_wmi_accel_setup()
1952 acer_wmi_accel_dev->evbit[0] = BIT_MASK(EV_ABS); in acer_wmi_accel_setup()
1953 input_set_abs_params(acer_wmi_accel_dev, ABS_X, -16384, 16384, 0, 0); in acer_wmi_accel_setup()
1954 input_set_abs_params(acer_wmi_accel_dev, ABS_Y, -16384, 16384, 0, 0); in acer_wmi_accel_setup()
1955 input_set_abs_params(acer_wmi_accel_dev, ABS_Z, -16384, 16384, 0, 0); in acer_wmi_accel_setup()
1980 return -ENOMEM; in acer_wmi_input_setup()
1982 acer_wmi_input_dev->name = "Acer WMI hotkeys"; in acer_wmi_input_setup()
1983 acer_wmi_input_dev->phys = "wmi/input0"; in acer_wmi_input_setup()
1984 acer_wmi_input_dev->id.bustype = BUS_HOST; in acer_wmi_input_setup()
1993 err = -EIO; in acer_wmi_input_setup()
2032 if (obj->type == ACPI_TYPE_BUFFER && in get_wmid_devices()
2033 (obj->buffer.length == sizeof(u32) || in get_wmid_devices()
2034 obj->buffer.length == sizeof(u64))) { in get_wmid_devices()
2035 devices = *((u32 *) obj->buffer.pointer); in get_wmid_devices()
2036 } else if (obj->type == ACPI_TYPE_INTEGER) { in get_wmid_devices()
2037 devices = (u32) obj->integer.value; in get_wmid_devices()
2053 err = acer_led_init(&device->dev); in acer_platform_probe()
2059 err = acer_backlight_init(&device->dev); in acer_platform_probe()
2064 err = acer_rfkill_init(&device->dev); in acer_platform_probe()
2095 struct acer_data *data = &interface->data; in acer_suspend()
2098 return -ENOMEM; in acer_suspend()
2103 data->mailled = value; in acer_suspend()
2108 data->brightness = value; in acer_suspend()
2116 struct acer_data *data = &interface->data; in acer_resume()
2119 return -ENOMEM; in acer_resume()
2122 set_u32(data->mailled, ACER_CAP_MAILLED); in acer_resume()
2125 set_u32(data->brightness, ACER_CAP_BRIGHTNESS); in acer_resume()
2141 struct acer_data *data = &interface->data; in acer_platform_shutdown()
2152 .name = "acer-wmi",
2164 debugfs_remove(interface->debug.devices); in remove_debugfs()
2165 debugfs_remove(interface->debug.root); in remove_debugfs()
2170 interface->debug.root = debugfs_create_dir("acer-wmi", NULL); in create_debugfs()
2171 if (!interface->debug.root) { in create_debugfs()
2173 return -ENOMEM; in create_debugfs()
2176 interface->debug.devices = debugfs_create_u32("devices", S_IRUGO, in create_debugfs()
2177 interface->debug.root, in create_debugfs()
2178 &interface->debug.wmid_devices); in create_debugfs()
2179 if (!interface->debug.devices) in create_debugfs()
2186 return -ENOMEM; in create_debugfs()
2193 pr_info("Acer Laptop ACPI-WMI Extras\n"); in acer_wmi_init()
2196 pr_info("Blacklisted hardware detected - not loading\n"); in acer_wmi_init()
2197 return -ENODEV; in acer_wmi_init()
2205 * acer-wmi driver handled those non-Acer machines by quirks list. in acer_wmi_init()
2206 * But actually acer-wmi driver was loaded on any machines that have in acer_wmi_init()
2208 * be supported by appropriate wmi drivers. e.g. fujitsu-laptop, in acer_wmi_init()
2209 * ideapad-laptop. So, here checks the machine that has AMW0_GUID1 in acer_wmi_init()
2217 return -ENODEV; in acer_wmi_init()
2221 * Detect which ACPI-WMI interface we're using. in acer_wmi_init()
2238 return -ENODEV; in acer_wmi_init()
2241 interface->capability |= ACER_CAP_BRIGHTNESS; in acer_wmi_init()
2244 return -ENODEV; in acer_wmi_init()
2252 return -ENODEV; in acer_wmi_init()
2261 return -ENODEV; in acer_wmi_init()
2270 interface->capability &= ~ACER_CAP_BRIGHTNESS; in acer_wmi_init()
2274 pr_warn("Cannot enable RF Button Driver\n"); in acer_wmi_init()
2278 pr_err("Cannot enable EC raw mode\n"); in acer_wmi_init()
2279 return -ENODEV; in acer_wmi_init()
2282 pr_err("Cannot enable Launch Manager mode\n"); in acer_wmi_init()
2283 return -ENODEV; in acer_wmi_init()
2286 pr_info("No WMID EC raw mode enable method\n"); in acer_wmi_init()
2294 if (err && err != -ENODEV) in acer_wmi_init()
2295 pr_warn("Cannot enable accelerometer\n"); in acer_wmi_init()
2304 acer_platform_device = platform_device_alloc("acer-wmi", -1); in acer_wmi_init()
2306 err = -ENOMEM; in acer_wmi_init()
2315 interface->debug.wmid_devices = get_wmid_devices(); in acer_wmi_init()