Add support for a new IR remote controller

Please follow below steps to add support for a new IR

###Steps

###1. Add the debug informations

Modify the file ‘PROJECT/common/drivers/amlogic/input/remote/remote_meson.c’

@@ -147,6 +147,7 @@ static u32 getkeycode(struct remote_dev *dev, u32 scancode)
                pr_err("cur_custom is nulll\n");
                return KEY_RESERVED;
        }
+       printk("%s,scancode=0x%04x\n",__func__, scancode);
        index = ir_lookup_by_scancode(&ct->tab, scancode);
        if (index < 0) {
                remote_printk(2, "scancode %d undefined\n", scancode);
@@ -163,6 +164,7 @@ static bool is_valid_custom(struct remote_dev *dev)
                return true;
        custom_code = chip->ir_contr[chip->ir_work].get_custom_code(chip);
        chip->cur_tab = seek_map_tab(chip, custom_code);
+       printk("%s,custom_code=0x%04x\n",__func__, custom_code);
        if (chip->cur_tab) {
                dev->keyup_delay = chip->cur_tab->tab.release_delay;
                return true;

after do that, you need to rebuild the kernel and reflash the image

###2. Get the custom code from printing log
The list of custom code in system:
<1> 0xfb04
<2> 0xfe01
<3> 0xbd02
<4> 0xff00

  1. If your custom code isn’t included , the printing log only one line when you click your IR
eg:  
is_valid_custom,custom_code=0xfc02

You need to add the custom code to the file ‘PROJECT/common/arch/arm64/boot/dts/amlogic/mesongxl.dtsi’

        custom_maps:custom_maps {
-               mapnum = <4>;
+               mapnum = <5>;
                map0 = <&map_0>;
                map1 = <&map_1>;
                map2 = <&map_2>;
                map3 = <&map_3>;
+               map4 = <&map_4>;
                map_0: map_0{
                        mapname = "amlogic-remote-1";
                        customcode = <0xfb04>;
@@ -852,6 +853,13 @@
                                REMOTE_KEY(0x01,158)
                                REMOTE_KEY(0x48,102)>;
                };
+               map_4: map_4{
+                       mapname = "amlogic-remote-5";
+                       customcode = <0xfc02>;
+                       release_delay = <80>;
+                       size  = <0>;
+                       keymap = <>;
+               }
        };

After do that, you need to rebuild the kernel and reflash the image
Now the printing log has two lines when you click your IR
eg:
is_valid_custom,custom_code=0xfc02
getkeycode,scancode=0x0009

Record the scancode of each key when you click your IR.

  1. If your custom code is included , the printing log has two lines when you click your IR
    eg:
    is_valid_custom,custom_code=0xff00
    getkeycode,scancode=0x0009

Record the scancode of each key when you click your IR.

###3. The list of Android Map Key

key 399   GRAVE
key 1     BACK
key 2     1
key 3     2
key 4     3
key 5     4
key 6     5
key 7     6
key 8     7
key 9     8
key 10    9
key 11    0
key 15    BACK
key 158   BACK
key 58    SOFT_RIGHT
key 107   ENDCALL
key 62    ENDCALL
key 139    MENU
key 125    MENU
key 60    NOTIFICATION
key 127   SEARCH
key 217   SEARCH
key 228   POUND
key 227   STAR
key 231   CALL
key 61    CALL
key 97    DPAD_CENTER
key 232   DPAD_CENTER
key 108   DPAD_DOWN
key 103   DPAD_UP
key 102   HOME
key 105   DPAD_LEFT
key 106   DPAD_RIGHT
key 115   VOLUME_UP
key 114   VOLUME_DOWN
key 104   VOLUME_UP
key 109   VOLUME_DOWN
key 212   CAMERA

key 16    Q
key 17    W
key 18    E
key 19    R
key 20    T
key 21    Y
key 22    U
key 23    I
key 24    O
key 25    P
key 26    LEFT_BRACKET
key 27    RIGHT_BRACKET
key 43    BACKSLASH

key 30    A
key 31    S
key 32    D
key 33    F
key 34    G
key 35    H
key 36    J
key 37    K
key 38    L
key 39    SEMICOLON
key 40    APOSTROPHE
key 14    DEL

key 44    Z
key 45    X
key 46    C
key 47    V
key 48    B
key 49    N
key 50    M
key 51    COMMA
key 52    PERIOD
key 53    SLASH
key 28    ENTER

key 75		F3
key 76		F4
key 77		F5
key 64		F6
key 65		F7
key 66		F8
key 67		F9
key 68		F10
key 69		F11

key 56    ALT_LEFT
key 100   ALT_RIGHT
key 42    SHIFT_LEFT
key 54    SHIFT_RIGHT
#key 15    TAB
key 57    SPACE
key 70    EXPLORER
key 155   ENVELOPE

key 12    MINUS
key 13    EQUALS
key 215   AT
key 119   MEDIA_PLAY_PAUSE
key 122   MEDIA_PREVIOUS
key 123   MEDIA_NEXT
key 120   MEDIA_FAST_FORWARD
key 121   MEDIA_REWIND
key 116   POWER
#key 116   POWER	WAKE
key 113   VOLUME_MUTE
key 128   MEDIA_STOP
key 130   ZOOM_IN
key 131   ZOOM_OUT
#key 133   NETFLIX
key 140   F10
#key 132   TV_REPEAT
#key 134   TV_SHORTCUTKEY_DISPAYMODE
#key 135   TV_SUBTITLE
#key 136   TV_SHORTCUTKEY_VOICEMODE
#key 137   TV_SWITCH

###4. Map the IR key of your

If you need to map one key of your IR as VOLUME_UP(the Map Key is 115, you can verify the list of Android Map Key)
Modify the file ‘PROJECT/common/arch/arm64/boot/dts/amlogic/mesongxl.dtsi’

@@ -857,8 +857,8 @@
                        mapname = "amlogic-remote-5";
                        customcode = <0xfc02>;
                        release_delay = <80>;
-                       size  = <0>;
-                       keymap = <>;
+                       size  = <1>;
+                       keymap = <REMOTE_KEY(0x09,115)>;
                }
        };

About REMOTE_KEY(0x09,115):
The 0x09 is the scancode of key
The 115 is the map key of Android

####Notice:

  • It is only for Nougat.
  • The PROJECT is the path of your project.
  • I’m very sorry for my bad english
1 Like