Jump to content

Fn HotKey and ALS sensor driver for Asus Notebooks


EMlyDinEsH

Recommended Posts

Hi everyone. I got FN keys work fine, but I'm getting bunch of errors and warning, compiling DSDT with 4-levels keyboard brightness patch. Here they are (i will also attach screenshot):

 

Line      Code     Message

2718     1088      Not all control paths return a value (UPBL)

2746     1088      Not all control paths return a value (DWBL)
8418     1088      Not all control paths return a value (UPBL)
8485     1088      Not all control paths return a value (DWBL)
10416   1099      Unknown reserved name (_WDG) 
10578   1093      Called method may not always return a value
11189   1099      Unknown reserved name (_WED)
11189   1099      Unknown reserved name (_WED)
​11189   1099      Unknown reserved name (_WED)
11395   1088      Not all control paths return a value (GDSP)
11834   4064      Object does not exist (KBLV)
11840   4064      Object does not exist (KBLV)
11843   4064      Object does not exist (PWKB)
11844   4065      Object not found or not accessible from scope (^^PCI0.LPCB.EC0.WRAM)
11853   4064      Object does not exist (KBLV)

11880   1088      Not all control paths return a value (HSWC)
11910   1100      Statement is unreachable
12187   1105      Possible operator timeout is ignored
12201   1105      Possible operator timeout is ignored
12216   1105      Possible operator timeout is ignored
12231   1105      Possible operator timeout is ignored
12245   1105      Possible operator timeout is ignored
12260   1105      Possible operator timeout is ignored
12275   1105      Possible operator timeout is ignored
16204   1099      Unknown reserved name (_WDG)
16534   1088      Not all control paths return a value (NTFY)
16893   1099      Unknown reserved name (_WED)
16893   1099      Unknown reserved name (_WED)
18908   1088      Not all control paths return a value (_Q0B)
20955   1088      Not all control paths return a value (MF42)
21113   1088      Not all control paths return a value (_PS0)
21133   1088      Not all control paths return a value (_PS3)

 

post-115862-0-58973200-1515412657_thumb.png


Can anyone help me solve this problem?
Laptop model: Asus Q500A. Ivy Bridge: Core i5-3230M.

DSDT.zip

Link to comment
Share on other sites

Hello.

I have ASUS K501UQ, i3-6100U Skylake, and, most importantly, I2C touchpad ELAN1000.

I use VoodooI2C, VoodooPS2 and AsusNBFnKeys. Unfortunately, keyboard backlight doesn't work. Is that because driver for that is in ApplePS2SmartTouchpad? Could I somehow get it out and into separate kext?

Link to comment
Share on other sites

we need this driver porting for the newer asus laptops

 

 

diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index 78ac481..925aa7b 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -144,6 +144,17 @@  config HID_ASUS
 	- EeeBook X205TA
 	- VivoBook E200HA
 
+config HID_ASUS_GAMING_NB_KBD
+	tristate "ASUS special macrokey device for Republic of Gamers laptop"
+	depends on HID
+	---help---
+	Support for ASUS special macrokey devices on Republic of Gamers latops
+	that are not fully compliant with HID standard
+
+        Say Y if you want support for the non-compliant features of the Asus
+        Republic of Gamers laptop keyboards, e.g:
+        - Asus Notebook GL553VD/GL553VE/GL753VD/GL753VE
+
 config HID_AUREAL
 	tristate "Aureal"
 	depends on HID
diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
index fc4b2aa..f15479a 100644
--- a/drivers/hid/Makefile
+++ b/drivers/hid/Makefile
@@ -26,6 +26,7 @@  obj-$(CONFIG_HID_ACRUX)		+= hid-axff.o
 obj-$(CONFIG_HID_APPLE)		+= hid-apple.o
 obj-$(CONFIG_HID_APPLEIR)	+= hid-appleir.o
 obj-$(CONFIG_HID_ASUS)		+= hid-asus.o
+obj-$(CONFIG_HID_ASUS_GAMING_NB_KBD)	+= hid-asus-rog.o
 obj-$(CONFIG_HID_AUREAL)	+= hid-aureal.o
 obj-$(CONFIG_HID_BELKIN)	+= hid-belkin.o
 obj-$(CONFIG_HID_BETOP_FF)	+= hid-betopff.o
diff --git a/drivers/hid/hid-asus-rog.c b/drivers/hid/hid-asus-rog.c
new file mode 100644
index 0000000..a33a693
--- /dev/null
+++ b/drivers/hid/hid-asus-rog.c
@@ -0,0 +1,80 @@ 
+/*
+ *  HID driver for some Asus Gaming model equipped with "special" macrokey
+ *  devices for hotkey handling
+ *
+ *  Currently supported devices are:
+ *    ASUS laptops for "Republic of Gamers"
+ *    GL553VD/GL553VE
+ *    GL753VD/GL753VE
+ *
+ *  Copyright (c) 2016 Chris Chiu <[email protected]>
+ *
+ *  This module based on hid-gyration
+ *
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ */
+
+#include <linux/device.h>
+#include <linux/input.h>
+#include <linux/hid.h>
+#include <linux/module.h>
+
+#include "hid-ids.h"
+
+#define asus_rog_map_key_clear(c)	hid_map_usage_clear(hi, usage, bit, \
+						max, EV_KEY, (c))
+static int asus_rog_input_mapping(struct hid_device *hdev, struct hid_input *hi,
+		struct hid_field *field, struct hid_usage *usage,
+		unsigned long **bit, int *max)
+{
+	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_ASUS_ROG_HOTKEY)
+		return 0;
+
+	set_bit(EV_REP, hi->input->evbit);
+	switch (usage->hid & HID_USAGE) {
+	/* Reported on ASUS Gaming model (Republic of Gamers) keyboards */
+	case 0x6c: asus_rog_map_key_clear(KEY_SLEEP);		break;
+	case 0x88: asus_rog_map_key_clear(KEY_WLAN);		break;
+	case 0xc5: asus_rog_map_key_clear(KEY_KBDILLUMDOWN);	break;
+	case 0xc4: asus_rog_map_key_clear(KEY_KBDILLUMUP);	break;
+	case 0x10: asus_rog_map_key_clear(KEY_BRIGHTNESSDOWN);	break;
+	case 0x20: asus_rog_map_key_clear(KEY_BRIGHTNESSUP);	break;
+	case 0x35: asus_rog_map_key_clear(KEY_DISPLAY_OFF);	break;
+	// KEY_F21 is for ASUS touchpad toggle
+	case 0x6b: asus_rog_map_key_clear(KEY_F21);             break;
+	case 0x82: asus_rog_map_key_clear(KEY_CAMERA);          break;
+	case 0xb5: asus_rog_map_key_clear(KEY_CALC);            break;
+	// KEY_PROG1 for ROG key
+	case 0x38: asus_rog_map_key_clear(KEY_PROG1);           break;
+	// KEY_PROG2 for Fn+C ASUS Splendid
+	case 0xba: asus_rog_map_key_clear(KEY_PROG2);           break;
+	// KEY_PROG3 for Fn+Space Power4Gear Hybrid, may not be present
+	case 0x5c: asus_rog_map_key_clear(KEY_PROG3);           break;
+
+	default:
+		return 0;
+	}
+	return 1;
+}
+
+static const struct hid_device_id asus_rog_devices[] = {
+	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_MACROKEY1) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_MACROKEY2) },
+	{ }
+};
+MODULE_DEVICE_TABLE(hid, asus_rog_devices);
+
+static struct hid_driver asus_rog_driver = {
+	.name = "asus-rog",
+	.id_table = asus_rog_devices,
+	.input_mapping = asus_rog_input_mapping,
+};
+module_hid_driver(asus_rog_driver);
+
+MODULE_LICENSE("GPL");
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 4ed9a4f..5c60aee 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -168,6 +168,8 @@ 
 #define USB_DEVICE_ID_ASUSTEK_LCM	0x1726
 #define USB_DEVICE_ID_ASUSTEK_LCM2	0x175b
 #define USB_DEVICE_ID_ASUSTEK_NOTEBOOK_KEYBOARD	0x8585
+#define USB_DEVICE_ID_ASUSTEK_ROG_MACROKEY1	0x1854
+#define USB_DEVICE_ID_ASUSTEK_ROG_MACROKEY2	0x1837
 
 #define USB_VENDOR_ID_ATEN		0x0557
 #define USB_DEVICE_ID_ATEN_UC100KM	0x2004
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 75b66ec..a6ccadb 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -170,6 +170,7 @@  struct hid_item {
 #define HID_UP_LOGIVENDOR	0xffbc0000
 #define HID_UP_LOGIVENDOR2   0xff090000
 #define HID_UP_LOGIVENDOR3   0xff430000
+#define HID_UP_ASUS_ROG_HOTKEY	0xff310000
 #define HID_UP_LNVENDOR		0xffa00000
 #define HID_UP_SENSOR		0x00200000
 


 

 

anyone brainy enough to port it?

Link to comment
Share on other sites

I will update my driver to support, so PM me for beta test (will share details). I will start development from next month as I am finally able to sort out my personal matters after very long time which allows me to spend on my projects again and hopefully nothing big comes again (I am sure there is none anymore than can bother me :) ).

PS: I might be active mostly during weekends. 

Link to comment
Share on other sites

Thanks for your time, however, it did not work for me. I have ASUS GL502VS 7th Gen, and I will provide my DSDT below. I would appreciate if you could give some suggestions on how to enable the function key. The only combination that works is for increasing, decreasing, and muting volume. Please help me fix the issue! it doesn't let me to upload my DSDT, it says"You aren't permitted to upload this kind of file" why?

 
Link to comment
Share on other sites

I will update my driver to support, so PM me for beta test (will share details). I will start development from next month as I am finally able to sort out my personal matters after very long time which allows me to spend on my projects again and hopefully nothing big comes again (I am sure there is none anymore than can bother me :) ).

 

PS: I might be active mostly during weekends. 

great news! im hoping the lcd backlight and keyboard backlight will finally work. 

here is my acpi folder if needed, https://github.com/onejay09/osx/raw/master/GL702VM-v2.zip

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...