kernel:input:ir, fix start kernel oops and move spaces
authorhuang zhibao <hzb@rock-chips.com>
Thu, 9 Oct 2014 02:29:12 +0000 (10:29 +0800)
committerhuang zhibao <hzb@rock-chips.com>
Thu, 9 Oct 2014 02:29:12 +0000 (10:29 +0800)
arch/arm/boot/dts/rk3036-sdk.dts
arch/arm/boot/dts/rk3128-box-rk88.dts
arch/arm/boot/dts/rk3128-box.dts
drivers/input/remotectl/rockchip_pwm_remotectl.c
include/dt-bindings/input/input.h

index d85411255f3c3c00bfb4758d8f4eefdffd7cccd7..f4710c1789e481d8db2df6f5e8677b7238380ab7 100755 (executable)
                card-detect-delay = <200>;
 
                ignore-pm-notify;
-               keep-power-in-suspend;
+               keep-power-in-suspend;
 
-               //vmmc-supply = <&rk808_ldo5_reg>;
+               //vmmc-supply = <&rk808_ldo5_reg>;
                status = "disabled";
 };
 
 &remotectl {
        handle_cpu_id = <1>;
        ir_key1{
-               compatible = "rockchip,ir_key";
                rockchip,usercode = <0x4040>;
-               rockchip,key_table = 
+               rockchip,key_table =
                        <0xf2   KEY_REPLY>,
-           <0xba       KEY_BACK>, 
-           <0xf4       KEY_UP>,
-           <0xf1       KEY_DOWN>,
-           <0xef       KEY_LEFT>,
-           <0xee       KEY_RIGHT>, 
-           <0xbd       KEY_HOME>,     
-           <0xea       KEY_VOLUMEUP>,
-           <0xe3       KEY_VOLUMEDOWN>,
-           <0xe2       KEY_SEARCH>,     
-           <0xb2       KEY_POWER>,    
-           <0xbc       KEY_MUTE>,      
-           <0xec       KEY_MENU>,
-           <0xbf       0x190>,     
-           <0xe0       0x191>,      
-           <0xe1       0x192>,      
-           <0xe9       183>,          
-           <0xe6       248>,          
-           <0xe8       185>,         
-           <0xe7       186>,          
-           <0xf0       388>,           
-           <0xbe       0x175>;
+                       <0xba   KEY_BACK>,
+                       <0xf4   KEY_UP>,
+                       <0xf1   KEY_DOWN>,
+                       <0xef   KEY_LEFT>,
+                       <0xee   KEY_RIGHT>,
+                       <0xbd   KEY_HOME>,
+                       <0xea   KEY_VOLUMEUP>,
+                       <0xe3   KEY_VOLUMEDOWN>,
+                       <0xe2   KEY_SEARCH>,
+                       <0xb2   KEY_POWER>,
+                       <0xbc   KEY_MUTE>,
+                       <0xec   KEY_MENU>,
+                       <0xbf   0x190>,
+                       <0xe0   0x191>,
+                       <0xe1   0x192>,
+                       <0xe9   183>,
+                       <0xe6   248>,
+                       <0xe8   185>,
+                       <0xe7   186>,
+                       <0xf0   388>,
+                       <0xbe   0x175>;
        };
        ir_key2{
-               compatible = "rockchip,ir_key";
                rockchip,usercode = <0xff00>;
-               rockchip,key_table = 
-                       <0xf9   KEY_HOME>,    
-       <0xbf   KEY_BACK>,      
-       <0xfb   KEY_MENU>,                      
-       <0xaa   KEY_REPLY>,             
-           <0xb9       KEY_UP>,        
-           <0xe9       KEY_DOWN>,
-           <0xb8       KEY_LEFT>,
-           <0xea       KEY_RIGHT>,
-           <0xeb       KEY_VOLUMEDOWN>,
-           <0xef       KEY_VOLUMEUP>,
-           <0xf7       KEY_MUTE>,      
-           <0xe7       KEY_POWER>,     
-           <0xfc       KEY_POWER>,     
-           <0xa9       KEY_VOLUMEDOWN>,        
-           <0xa8       KEY_VOLUMEDOWN>,        
-           <0xe0       KEY_VOLUMEDOWN>,        
-           <0xa5       KEY_VOLUMEDOWN>,        
-           <0xab       183>,   
-           <0xb7       388>,   
-           <0xf8       184>,   
-           <0xaf       185>,   
-           <0xed       KEY_VOLUMEDOWN>,        
-           <0xee       186>,   
-           <0xb3       KEY_VOLUMEDOWN>,        
-           <0xf1       KEY_VOLUMEDOWN>,        
-           <0xf2       KEY_VOLUMEDOWN>,        
-           <0xf3       KEY_SEARCH>,    
-           <0xb4       KEY_VOLUMEDOWN>,        
-           <0xbe       KEY_SEARCH>;    
+               rockchip,key_table =
+                       <0xf9   KEY_HOME>,
+                       <0xbf   KEY_BACK>,
+                       <0xfb   KEY_MENU>,
+                       <0xaa   KEY_REPLY>,
+                       <0xb9   KEY_UP>,
+                       <0xe9   KEY_DOWN>,
+                       <0xb8   KEY_LEFT>,
+                       <0xea   KEY_RIGHT>,
+                       <0xeb   KEY_VOLUMEDOWN>,
+                       <0xef   KEY_VOLUMEUP>,
+                       <0xf7   KEY_MUTE>,
+                       <0xe7   KEY_POWER>,
+                       <0xfc   KEY_POWER>,
+                       <0xa9   KEY_VOLUMEDOWN>,
+                       <0xa8   KEY_VOLUMEDOWN>,
+                       <0xe0   KEY_VOLUMEDOWN>,
+                       <0xa5   KEY_VOLUMEDOWN>,
+                       <0xab   183>,
+                       <0xb7   388>,
+                       <0xf8   184>,
+                       <0xaf   185>,
+                       <0xed   KEY_VOLUMEDOWN>,
+                       <0xee   186>,
+                       <0xb3   KEY_VOLUMEDOWN>,
+                       <0xf1   KEY_VOLUMEDOWN>,
+                       <0xf2   KEY_VOLUMEDOWN>,
+                       <0xf3   KEY_SEARCH>,
+                       <0xb4   KEY_VOLUMEDOWN>,
+                       <0xbe   KEY_SEARCH>;
        };
        ir_key3{
-               compatible = "rockchip,ir_key";
                rockchip,usercode = <0x1dcc>;
-               rockchip,key_table = 
+               rockchip,key_table =
                        <0xee   KEY_REPLY>,
                        <0xf0   KEY_BACK>,
                        <0xf8   KEY_UP>,
                        <0xf8   KEY_8>,
                        <0xb0   KEY_9>,
                        <0xb6   KEY_0>,
-                       <0xb5   KEY_BACKSPACE>;    
+                       <0xb5   KEY_BACKSPACE>;
        };
-};
\ No newline at end of file
+};
index 9e9b4fda4d5d5e7e58622287373c40e8f8061aeb..bc53226c0c0d9c305e4d38eb6db42e139d5ea956 100755 (executable)
 
 &spi0 {
        status = "disabled";
-       max-freq = <48000000>;  
+       max-freq = <48000000>;
        /*
        spi_test@00 {
-               compatible = "rockchip,spi_test_bus0_cs0";
-               reg = <0>;
-               spi-max-frequency = <24000000>;
-               //spi-cpha;
+               compatible = "rockchip,spi_test_bus0_cs0";
+               reg = <0>;
+               spi-max-frequency = <24000000>;
+               //spi-cpha;
                //spi-cpol;
                poll_mode = <0>;
                type = <0>;
                enable_dma = <0>;
 
        };
-       
+
        spi_test@01 {
                compatible = "rockchip,spi_test_bus0_cs1";
                reg = <1>;
                spi-cpol;
                poll_mode = <0>;
                type = <0>;
-               enable_dma = <0>;               
+               enable_dma = <0>;
        };
        */
 };
        cd-gpios = <&gpio1 GPIO_C1 GPIO_ACTIVE_HIGH>;/*CD GPIO*/
 };
 
+&remotectl {
+       handle_cpu_id = <1>;
+       ir_key1{
+               rockchip,usercode = <0x4040>;
+               rockchip,key_table =
+                       <0xf2   KEY_REPLY>,
+                       <0xba   KEY_BACK>,
+                       <0xf4   KEY_UP>,
+                       <0xf1   KEY_DOWN>,
+                       <0xef   KEY_LEFT>,
+                       <0xee   KEY_RIGHT>,
+                       <0xbd   KEY_HOME>,
+                       <0xea   KEY_VOLUMEUP>,
+                       <0xe3   KEY_VOLUMEDOWN>,
+                       <0xe2   KEY_SEARCH>,
+                       <0xb2   KEY_POWER>,
+                       <0xbc   KEY_MUTE>,
+                       <0xec   KEY_MENU>,
+                       <0xbf   0x190>,
+                       <0xe0   0x191>,
+                       <0xe1   0x192>,
+                       <0xe9   183>,
+                       <0xe6   248>,
+                       <0xe8   185>,
+                       <0xe7   186>,
+                       <0xf0   388>,
+                       <0xbe   0x175>;
+       };
+       ir_key2{
+               rockchip,usercode = <0xff00>;
+               rockchip,key_table =
+                       <0xf9   KEY_HOME>,
+                       <0xbf   KEY_BACK>,
+                       <0xfb   KEY_MENU>,
+                       <0xaa   KEY_REPLY>,
+                       <0xb9   KEY_UP>,
+                       <0xe9   KEY_DOWN>,
+                       <0xb8   KEY_LEFT>,
+                       <0xea   KEY_RIGHT>,
+                       <0xeb   KEY_VOLUMEDOWN>,
+                       <0xef   KEY_VOLUMEUP>,
+                       <0xf7   KEY_MUTE>,
+                       <0xe7   KEY_POWER>,
+                       <0xfc   KEY_POWER>,
+                       <0xa9   KEY_VOLUMEDOWN>,
+                       <0xa8   KEY_VOLUMEDOWN>,
+                       <0xe0   KEY_VOLUMEDOWN>,
+                       <0xa5   KEY_VOLUMEDOWN>,
+                       <0xab   183>,
+                       <0xb7   388>,
+                       <0xf8   184>,
+                       <0xaf   185>,
+                       <0xed   KEY_VOLUMEDOWN>,
+                       <0xee   186>,
+                       <0xb3   KEY_VOLUMEDOWN>,
+                       <0xf1   KEY_VOLUMEDOWN>,
+                       <0xf2   KEY_VOLUMEDOWN>,
+                       <0xf3   KEY_SEARCH>,
+                       <0xb4   KEY_VOLUMEDOWN>,
+                       <0xbe   KEY_SEARCH>;
+       };
+       ir_key3{
+               rockchip,usercode = <0x1dcc>;
+               rockchip,key_table =
+                       <0xee   KEY_REPLY>,
+                       <0xf0   KEY_BACK>,
+                       <0xf8   KEY_UP>,
+                       <0xbb   KEY_DOWN>,
+                       <0xef   KEY_LEFT>,
+                       <0xed   KEY_RIGHT>,
+                       <0xfc   KEY_HOME>,
+                       <0xf1   KEY_VOLUMEUP>,
+                       <0xfd   KEY_VOLUMEDOWN>,
+                       <0xb7   KEY_SEARCH>,
+                       <0xff   KEY_POWER>,
+                       <0xf3   KEY_MUTE>,
+                       <0xbf   KEY_MENU>,
+                       <0xf9   0x191>,
+                       <0xf5   0x192>,
+                       <0xb3   388>,
+                       <0xbe   KEY_1>,
+                       <0xba   KEY_2>,
+                       <0xb2   KEY_3>,
+                       <0xbd   KEY_4>,
+                       <0xf9   KEY_5>,
+                       <0xb1   KEY_6>,
+                       <0xfc   KEY_7>,
+                       <0xf8   KEY_8>,
+                       <0xb0   KEY_9>,
+                       <0xb6   KEY_0>,
+                       <0xb5   KEY_BACKSPACE>;
+       };
+};
\ No newline at end of file
index 479d2b4b6e4ae450b208d575cf9be1bf2fcdf4d4..e70d2de375652adba163fb18c09e14f72c178e42 100755 (executable)
 
 &spi0 {
        status = "disabled";
-       max-freq = <48000000>;  
+       max-freq = <48000000>;
        /*
        spi_test@00 {
-               compatible = "rockchip,spi_test_bus0_cs0";
-               reg = <0>;
-               spi-max-frequency = <24000000>;
-               //spi-cpha;
+               compatible = "rockchip,spi_test_bus0_cs0";
+               reg = <0>;
+               spi-max-frequency = <24000000>;
+               //spi-cpha;
                //spi-cpol;
                poll_mode = <0>;
                type = <0>;
                enable_dma = <0>;
 
        };
-       
+
        spi_test@01 {
                compatible = "rockchip,spi_test_bus0_cs1";
                reg = <1>;
                spi-cpol;
                poll_mode = <0>;
                type = <0>;
-               enable_dma = <0>;               
+               enable_dma = <0>;
        };
        */
 };
 &remotectl {
        handle_cpu_id = <1>;
        ir_key1{
-               compatible = "rockchip,ir_key";
                rockchip,usercode = <0x4040>;
-               rockchip,key_table = 
+               rockchip,key_table =
                        <0xf2   KEY_REPLY>,
-           <0xba       KEY_BACK>, 
-           <0xf4       KEY_UP>,
-           <0xf1       KEY_DOWN>,
-           <0xef       KEY_LEFT>,
-           <0xee       KEY_RIGHT>, 
-           <0xbd       KEY_HOME>,     
-           <0xea       KEY_VOLUMEUP>,
-           <0xe3       KEY_VOLUMEDOWN>,
-           <0xe2       KEY_SEARCH>,     
-           <0xb2       KEY_POWER>,    
-           <0xbc       KEY_MUTE>,      
-           <0xec       KEY_MENU>,
-           <0xbf       0x190>,     
-           <0xe0       0x191>,      
-           <0xe1       0x192>,      
-           <0xe9       183>,          
-           <0xe6       248>,          
-           <0xe8       185>,         
-           <0xe7       186>,          
-           <0xf0       388>,           
-           <0xbe       0x175>;
+                       <0xba   KEY_BACK>,
+                       <0xf4   KEY_UP>,
+                       <0xf1   KEY_DOWN>,
+                       <0xef   KEY_LEFT>,
+                       <0xee   KEY_RIGHT>,
+                       <0xbd   KEY_HOME>,
+                       <0xea   KEY_VOLUMEUP>,
+                       <0xe3   KEY_VOLUMEDOWN>,
+                       <0xe2   KEY_SEARCH>,
+                       <0xb2   KEY_POWER>,
+                       <0xbc   KEY_MUTE>,
+                       <0xec   KEY_MENU>,
+                       <0xbf   0x190>,
+                       <0xe0   0x191>,
+                       <0xe1   0x192>,
+                       <0xe9   183>,
+                       <0xe6   248>,
+                       <0xe8   185>,
+                       <0xe7   186>,
+                       <0xf0   388>,
+                       <0xbe   0x175>;
        };
        ir_key2{
-               compatible = "rockchip,ir_key";
                rockchip,usercode = <0xff00>;
-               rockchip,key_table = 
-                       <0xf9   KEY_HOME>,    
-       <0xbf   KEY_BACK>,      
-       <0xfb   KEY_MENU>,                      
-       <0xaa   KEY_REPLY>,             
-           <0xb9       KEY_UP>,        
-           <0xe9       KEY_DOWN>,
-           <0xb8       KEY_LEFT>,
-           <0xea       KEY_RIGHT>,
-           <0xeb       KEY_VOLUMEDOWN>,
-           <0xef       KEY_VOLUMEUP>,
-           <0xf7       KEY_MUTE>,      
-           <0xe7       KEY_POWER>,     
-           <0xfc       KEY_POWER>,     
-           <0xa9       KEY_VOLUMEDOWN>,        
-           <0xa8       KEY_VOLUMEDOWN>,        
-           <0xe0       KEY_VOLUMEDOWN>,        
-           <0xa5       KEY_VOLUMEDOWN>,        
-           <0xab       183>,   
-           <0xb7       388>,   
-           <0xf8       184>,   
-           <0xaf       185>,   
-           <0xed       KEY_VOLUMEDOWN>,        
-           <0xee       186>,   
-           <0xb3       KEY_VOLUMEDOWN>,        
-           <0xf1       KEY_VOLUMEDOWN>,        
-           <0xf2       KEY_VOLUMEDOWN>,        
-           <0xf3       KEY_SEARCH>,    
-           <0xb4       KEY_VOLUMEDOWN>,        
-           <0xbe       KEY_SEARCH>;    
+               rockchip,key_table =
+                       <0xf9   KEY_HOME>,
+                       <0xbf   KEY_BACK>,
+                       <0xfb   KEY_MENU>,
+                       <0xaa   KEY_REPLY>,
+                       <0xb9   KEY_UP>,
+                       <0xe9   KEY_DOWN>,
+                       <0xb8   KEY_LEFT>,
+                       <0xea   KEY_RIGHT>,
+                       <0xeb   KEY_VOLUMEDOWN>,
+                       <0xef   KEY_VOLUMEUP>,
+                       <0xf7   KEY_MUTE>,
+                       <0xe7   KEY_POWER>,
+                       <0xfc   KEY_POWER>,
+                       <0xa9   KEY_VOLUMEDOWN>,
+                       <0xa8   KEY_VOLUMEDOWN>,
+                       <0xe0   KEY_VOLUMEDOWN>,
+                       <0xa5   KEY_VOLUMEDOWN>,
+                       <0xab   183>,
+                       <0xb7   388>,
+                       <0xf8   184>,
+                       <0xaf   185>,
+                       <0xed   KEY_VOLUMEDOWN>,
+                       <0xee   186>,
+                       <0xb3   KEY_VOLUMEDOWN>,
+                       <0xf1   KEY_VOLUMEDOWN>,
+                       <0xf2   KEY_VOLUMEDOWN>,
+                       <0xf3   KEY_SEARCH>,
+                       <0xb4   KEY_VOLUMEDOWN>,
+                       <0xbe   KEY_SEARCH>;
        };
-       /*
        ir_key3{
-               compatible = "rockchip,ir_key";
                rockchip,usercode = <0x1dcc>;
-               rockchip,key_table = 
+               rockchip,key_table =
                        <0xee   KEY_REPLY>,
                        <0xf0   KEY_BACK>,
                        <0xf8   KEY_UP>,
                        <0xf8   KEY_8>,
                        <0xb0   KEY_9>,
                        <0xb6   KEY_0>,
-                       <0xb5   KEY_BACKSPACE>;    
-       };*/
-};
\ No newline at end of file
+                       <0xb5   KEY_BACKSPACE>;
+       };
+};
index 6447f2471658aae75d5685f178c86ca1fa9271c3..614c6e522a4fa8159779c5ca8fb7d1c4b76a1e9b 100755 (executable)
@@ -71,7 +71,7 @@ struct rkxx_remotectl_drvdata {
        struct wake_lock remotectl_wake_lock;
 };
 
-static struct rkxx_remotectl_button *remotectl_button; 
+static struct rkxx_remotectl_button *remotectl_button;
 
 
 static int remotectl_keybd_num_lookup(struct rkxx_remotectl_drvdata *ddata)
@@ -106,17 +106,37 @@ static int remotectl_keycode_lookup(struct rkxx_remotectl_drvdata *ddata)
        return 0;
 }
 
+static int rk_remotectl_get_irkeybd_count(struct platform_device *pdev)
+{
+       struct device_node *node = pdev->dev.of_node;
+       struct device_node *child_node;
+       int boardnum;
+       int temp_usercode;
+
+       boardnum = 0;
+       for_each_child_of_node(node, child_node) {
+               if(of_property_read_u32(child_node, "rockchip,usercode",
+                       &temp_usercode)) {
+                       DBG("get keybd num error.\n");
+               } else {
+                       boardnum++;
+               }
+       }
+       DBG("get keybd num = 0x%x.\n", boardnum);
+       return boardnum;
+}
+
 
 static int rk_remotectl_parse_ir_keys(struct platform_device *pdev)
 {
        struct rkxx_remotectl_drvdata *ddata = platform_get_drvdata(pdev);
        struct device_node *node = pdev->dev.of_node;
        struct device_node *child_node;
-       u32 loop;
-       u32 ret;
-       u32 len;
-       u32 boardnum;
-       
+       int loop;
+       int ret;
+       int len;
+       int boardnum;
+
        boardnum = 0;
        for_each_child_of_node(node, child_node) {
                if(of_property_read_u32(child_node, "rockchip,usercode",
@@ -131,16 +151,16 @@ static int rk_remotectl_parse_ir_keys(struct platform_device *pdev)
                len /= sizeof(u32);
                DBG("len=0x%x\n",len);
                remotectl_button[boardnum].nbuttons = len/2;
-               if(of_property_read_u32_array(child_node, "rockchip,key_table", 
+               if(of_property_read_u32_array(child_node, "rockchip,key_table",
                         (u32 *)remotectl_button[boardnum].key_table, len)) {
                        dev_err(&pdev->dev, "Missing key_table property in the DTS.\n");
                        ret = -1;
                        return ret;
                }
                for (loop=0; loop<(len/2); loop++) {
-                       DBG("board[%d].scanCode[%d]=0x%x\n", boardnum, loop, 
+                       DBG("board[%d].scanCode[%d]=0x%x\n", boardnum, loop,
                                        remotectl_button[boardnum].key_table[loop].scancode);
-                       DBG("board[%d].keyCode[%d]=%d\n", boardnum, loop, 
+                       DBG("board[%d].keyCode[%d]=%d\n", boardnum, loop,
                                        remotectl_button[boardnum].key_table[loop].keycode);
                }
                boardnum++;
@@ -164,7 +184,7 @@ static void rk_pwm_remotectl_do_something(unsigned long  data)
                break;
        }
        case RMC_PRELOAD: {
-               mod_timer(&ddata->timer, jiffies + msecs_to_jiffies(130));
+               mod_timer(&ddata->timer, jiffies + msecs_to_jiffies(140));
                if ((RK_PWM_TIME_PRE_MIN < ddata->period) &&
                    (ddata->period < RK_PWM_TIME_PRE_MAX)) {
                        ddata->scandata = 0;
@@ -346,9 +366,9 @@ static irqreturn_t rockchip_pwm_irq(int irq, void *dev_id)
                }
        }
        break;
-       default:        
+       default:
        break;
-       }               
+       }
        return IRQ_NONE;
 }
 
@@ -390,9 +410,9 @@ static int rk_pwm_remotectl_hw_init(struct rkxx_remotectl_drvdata *ddata)
                writel_relaxed(val, ddata->base + PWM3_REG_INT_EN);
        }
        break;
-       default:        
+       default:
        break;
-       }               
+       }
        val = readl_relaxed(ddata->base + PWM_REG_CTRL);
        val = (val & 0xFFFFFFFE) | PWM_ENABLE;
        writel_relaxed(val, ddata->base + PWM_REG_CTRL);
@@ -405,7 +425,6 @@ static int rk_pwm_probe(struct platform_device *pdev)
 {
        struct rkxx_remotectl_drvdata *ddata;
        struct device_node *np = pdev->dev.of_node;
-       struct device_node *child_node;
        struct resource *r;
        struct input_dev *input;
        struct clk *clk;
@@ -416,7 +435,7 @@ static int rk_pwm_probe(struct platform_device *pdev)
        int i, j;
        int cpu_id;
        int pwm_id;
-       
+
        pr_err(".. rk pwm remotectl v1.1 init\n");
        r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!r) {
@@ -437,11 +456,7 @@ static int rk_pwm_probe(struct platform_device *pdev)
        if (IS_ERR(clk))
                return PTR_ERR(clk);
        platform_set_drvdata(pdev, ddata);
-       num = 0;
-       for_each_child_of_node(np, child_node){
-               if(of_device_is_compatible(child_node, "rockchip,ir_key"))
-                       num++;
-       }
+       num = rk_remotectl_get_irkeybd_count(pdev);
        if (num == 0) {
                pr_err("remotectl: no ir keyboard add in dts!!\n");
                return -1;
@@ -499,19 +514,19 @@ static int rk_pwm_probe(struct platform_device *pdev)
                pr_err("remotectl: register input device err, ret: %d\n", ret);
        input_set_capability(input, EV_KEY, KEY_WAKEUP);
        device_init_wakeup(&pdev->dev, 1);
+       enable_irq_wake(irq);
+       setup_timer(&ddata->timer, rk_pwm_remotectl_timer,
+                   (unsigned long)ddata);
+       //mod_timer(&ddata->timer, jiffies + msecs_to_jiffies(1000));
+       cpumask_clear(&cpumask);
+       cpumask_set_cpu(cpu_id, &cpumask);
+       irq_set_affinity(irq, &cpumask);
        ret = devm_request_irq(&pdev->dev, irq, rockchip_pwm_irq,
                               0, "rk_pwm_irq", ddata);
        if (ret) {
                dev_err(&pdev->dev, "cannot claim IRQ %d\n", irq);
                return ret;
        }
-       enable_irq_wake(irq);
-       setup_timer(&ddata->timer, rk_pwm_remotectl_timer,
-                   (unsigned long)ddata);
-       mod_timer(&ddata->timer, jiffies + msecs_to_jiffies(1000));
-       cpumask_clear(&cpumask);
-       cpumask_set_cpu(cpu_id, &cpumask); 
-       irq_set_affinity(irq, &cpumask); 
        rk_pwm_remotectl_hw_init(ddata);
        return ret;
 }
@@ -528,7 +543,7 @@ static int remotectl_suspend(struct device *dev)
        struct cpumask cpumask;
        struct platform_device *pdev = to_platform_device(dev);
        struct rkxx_remotectl_drvdata *ddata = platform_get_drvdata(pdev);
-       
+
        cpumask_clear(&cpumask);
        cpumask_set_cpu(cpu, &cpumask);
        irq_set_affinity(ddata->irq, &cpumask);
@@ -541,10 +556,10 @@ static int remotectl_resume(struct device *dev)
        struct cpumask cpumask;
        struct platform_device *pdev = to_platform_device(dev);
        struct rkxx_remotectl_drvdata *ddata = platform_get_drvdata(pdev);
-       
+
        cpumask_clear(&cpumask);
-       cpumask_set_cpu(ddata->handle_cpu_id, &cpumask); 
-       irq_set_affinity(ddata->irq, &cpumask); 
+       cpumask_set_cpu(ddata->handle_cpu_id, &cpumask);
+       irq_set_affinity(ddata->irq, &cpumask);
        return 0;
 }
 
@@ -566,8 +581,8 @@ static struct platform_driver rk_pwm_driver = {
                .name = "remotectl-pwm",
                .of_match_table = rk_pwm_of_match,
 #ifdef CONFIG_PM
-        .pm    = &remotectl_pm_ops,
-#endif 
+               .pm = &remotectl_pm_ops,
+#endif
        },
        .probe = rk_pwm_probe,
        .remove = rk_pwm_remove,
index 32d672be9436196b4a833e97d7039b3e28b558a7..2b1990d61e7f3881ef7e6bb5096c4b2dea9c3090 100755 (executable)
-#define KEY_RESERVED           0\r
-#define KEY_ESC                        1\r
-#define KEY_1                  2\r
-#define KEY_2                  3\r
-#define KEY_3                  4\r
-#define KEY_4                  5\r
-#define KEY_5                  6\r
-#define KEY_6                  7\r
-#define KEY_7                  8\r
-#define KEY_8                  9\r
-#define KEY_9                  10\r
-#define KEY_0                  11\r
-#define KEY_MINUS              12\r
-#define KEY_EQUAL              13\r
-#define KEY_BACKSPACE          14\r
-#define KEY_TAB                        15\r
-#define KEY_Q                  16\r
-#define KEY_W                  17\r
-#define KEY_E                  18\r
-#define KEY_R                  19\r
-#define KEY_T                  20\r
-#define KEY_Y                  21\r
-#define KEY_U                  22\r
-#define KEY_I                  23\r
-#define KEY_O                  24\r
-#define KEY_P                  25\r
-#define KEY_LEFTBRACE          26\r
-#define KEY_RIGHTBRACE         27\r
-#define KEY_ENTER              28\r
-#define KEY_LEFTCTRL           29\r
-#define KEY_A                  30\r
-#define KEY_S                  31\r
-#define KEY_D                  32\r
-#define KEY_F                  33\r
-#define KEY_G                  34\r
-#define KEY_H                  35\r
-#define KEY_J                  36\r
-#define KEY_K                  37\r
-#define KEY_L                  38\r
-#define KEY_SEMICOLON          39\r
-#define KEY_APOSTROPHE         40\r
-#define KEY_GRAVE              41\r
-#define KEY_LEFTSHIFT          42\r
-#define KEY_BACKSLASH          43\r
-#define KEY_Z                  44\r
-#define KEY_X                  45\r
-#define KEY_C                  46\r
-#define KEY_V                  47\r
-#define KEY_B                  48\r
-#define KEY_N                  49\r
-#define KEY_M                  50\r
-\r
-#define KEY_F1                 59\r
-#define KEY_F2                 60\r
-#define KEY_F3                 61\r
-#define KEY_F4                 62\r
-#define KEY_F5                 63\r
-#define KEY_F6                 64\r
-#define KEY_F7                 65\r
-#define KEY_F8                 66\r
-#define KEY_F9                 67\r
-#define KEY_F10                        68\r
-\r
-#define KEY_REPLY 232\r
-#define KEY_BACK       158\r
-#define KEY_UP 103\r
-#define KEY_DOWN       108\r
-#define KEY_LEFT       105\r
-#define KEY_RIGHT      106\r
-#define KEY_HOME       102\r
-#define KEY_VOLUMEUP   115\r
-#define KEY_VOLUMEDOWN 114\r
-#define KEY_SEARCH     217\r
-#define KEY_POWER      116\r
-#define KEY_MUTE       113\r
-#define KEY_MENU       139\r
-\r
-\r
+/*
+ * Device properties and quirks
+ */
+
+#define INPUT_PROP_POINTER             0x00    /* needs a pointer */
+#define INPUT_PROP_DIRECT              0x01    /* direct input devices */
+#define INPUT_PROP_BUTTONPAD           0x02    /* has button(s) under pad */
+#define INPUT_PROP_SEMI_MT             0x03    /* touch rectangle only */
+
+#define INPUT_PROP_MAX                 0x1f
+#define INPUT_PROP_CNT                 (INPUT_PROP_MAX + 1)
+
+/*
+ * Event types
+ */
+
+#define EV_SYN                 0x00
+#define EV_KEY                 0x01
+#define EV_REL                 0x02
+#define EV_ABS                 0x03
+#define EV_MSC                 0x04
+#define EV_SW                  0x05
+#define EV_LED                 0x11
+#define EV_SND                 0x12
+#define EV_REP                 0x14
+#define EV_FF                  0x15
+#define EV_PWR                 0x16
+#define EV_FF_STATUS           0x17
+#define EV_MAX                 0x1f
+#define EV_CNT                 (EV_MAX+1)
+
+/*
+ * Synchronization events.
+ */
+
+#define SYN_REPORT             0
+#define SYN_CONFIG             1
+#define SYN_MT_REPORT          2
+#define SYN_DROPPED            3
+
+/*
+ * Keys and buttons
+ *
+ * Most of the keys/buttons are modeled after USB HUT 1.12
+ * (see http://www.usb.org/developers/hidpage).
+ * Abbreviations in the comments:
+ * AC - Application Control
+ * AL - Application Launch Button
+ * SC - System Control
+ */
+
+#define KEY_RESERVED           0
+#define KEY_ESC                        1
+#define KEY_1                  2
+#define KEY_2                  3
+#define KEY_3                  4
+#define KEY_4                  5
+#define KEY_5                  6
+#define KEY_6                  7
+#define KEY_7                  8
+#define KEY_8                  9
+#define KEY_9                  10
+#define KEY_0                  11
+#define KEY_MINUS              12
+#define KEY_EQUAL              13
+#define KEY_BACKSPACE          14
+#define KEY_TAB                        15
+#define KEY_Q                  16
+#define KEY_W                  17
+#define KEY_E                  18
+#define KEY_R                  19
+#define KEY_T                  20
+#define KEY_Y                  21
+#define KEY_U                  22
+#define KEY_I                  23
+#define KEY_O                  24
+#define KEY_P                  25
+#define KEY_LEFTBRACE          26
+#define KEY_RIGHTBRACE         27
+#define KEY_ENTER              28
+#define KEY_LEFTCTRL           29
+#define KEY_A                  30
+#define KEY_S                  31
+#define KEY_D                  32
+#define KEY_F                  33
+#define KEY_G                  34
+#define KEY_H                  35
+#define KEY_J                  36
+#define KEY_K                  37
+#define KEY_L                  38
+#define KEY_SEMICOLON          39
+#define KEY_APOSTROPHE         40
+#define KEY_GRAVE              41
+#define KEY_LEFTSHIFT          42
+#define KEY_BACKSLASH          43
+#define KEY_Z                  44
+#define KEY_X                  45
+#define KEY_C                  46
+#define KEY_V                  47
+#define KEY_B                  48
+#define KEY_N                  49
+#define KEY_M                  50
+#define KEY_COMMA              51
+#define KEY_DOT                        52
+#define KEY_SLASH              53
+#define KEY_RIGHTSHIFT         54
+#define KEY_KPASTERISK         55
+#define KEY_LEFTALT            56
+#define KEY_SPACE              57
+#define KEY_CAPSLOCK           58
+#define KEY_F1                 59
+#define KEY_F2                 60
+#define KEY_F3                 61
+#define KEY_F4                 62
+#define KEY_F5                 63
+#define KEY_F6                 64
+#define KEY_F7                 65
+#define KEY_F8                 66
+#define KEY_F9                 67
+#define KEY_F10                        68
+#define KEY_NUMLOCK            69
+#define KEY_SCROLLLOCK         70
+#define KEY_KP7                        71
+#define KEY_KP8                        72
+#define KEY_KP9                        73
+#define KEY_KPMINUS            74
+#define KEY_KP4                        75
+#define KEY_KP5                        76
+#define KEY_KP6                        77
+#define KEY_KPPLUS             78
+#define KEY_KP1                        79
+#define KEY_KP2                        80
+#define KEY_KP3                        81
+#define KEY_KP0                        82
+#define KEY_KPDOT              83
+
+#define KEY_ZENKAKUHANKAKU     85
+#define KEY_102ND              86
+#define KEY_F11                        87
+#define KEY_F12                        88
+#define KEY_RO                 89
+#define KEY_KATAKANA           90
+#define KEY_HIRAGANA           91
+#define KEY_HENKAN             92
+#define KEY_KATAKANAHIRAGANA   93
+#define KEY_MUHENKAN           94
+#define KEY_KPJPCOMMA          95
+#define KEY_KPENTER            96
+#define KEY_RIGHTCTRL          97
+#define KEY_KPSLASH            98
+#define KEY_SYSRQ              99
+#define KEY_RIGHTALT           100
+#define KEY_LINEFEED           101
+#define KEY_HOME               102
+#define KEY_UP                 103
+#define KEY_PAGEUP             104
+#define KEY_LEFT               105
+#define KEY_RIGHT              106
+#define KEY_END                        107
+#define KEY_DOWN               108
+#define KEY_PAGEDOWN           109
+#define KEY_INSERT             110
+#define KEY_DELETE             111
+#define KEY_MACRO              112
+#define KEY_MUTE               113
+#define KEY_VOLUMEDOWN         114
+#define KEY_VOLUMEUP           115
+#define KEY_POWER              116     /* SC System Power Down */
+#define KEY_KPEQUAL            117
+#define KEY_KPPLUSMINUS                118
+#define KEY_PAUSE              119
+#define KEY_SCALE              120     /* AL Compiz Scale (Expose) */
+
+#define KEY_KPCOMMA            121
+#define KEY_HANGEUL            122
+#define KEY_HANGUEL            KEY_HANGEUL
+#define KEY_HANJA              123
+#define KEY_YEN                        124
+#define KEY_LEFTMETA           125
+#define KEY_RIGHTMETA          126
+#define KEY_COMPOSE            127
+
+#define KEY_STOP               128     /* AC Stop */
+#define KEY_AGAIN              129
+#define KEY_PROPS              130     /* AC Properties */
+#define KEY_UNDO               131     /* AC Undo */
+#define KEY_FRONT              132
+#define KEY_COPY               133     /* AC Copy */
+#define KEY_OPEN               134     /* AC Open */
+#define KEY_PASTE              135     /* AC Paste */
+#define KEY_FIND               136     /* AC Search */
+#define KEY_CUT                        137     /* AC Cut */
+#define KEY_HELP               138     /* AL Integrated Help Center */
+#define KEY_MENU               139     /* Menu (show menu) */
+#define KEY_CALC               140     /* AL Calculator */
+#define KEY_SETUP              141
+#define KEY_SLEEP              142     /* SC System Sleep */
+#define KEY_WAKEUP             143     /* System Wake Up */
+#define KEY_FILE               144     /* AL Local Machine Browser */
+#define KEY_SENDFILE           145
+#define KEY_DELETEFILE         146
+#define KEY_XFER               147
+#define KEY_PROG1              148
+#define KEY_PROG2              149
+#define KEY_WWW                        150     /* AL Internet Browser */
+#define KEY_MSDOS              151
+#define KEY_COFFEE             152     /* AL Terminal Lock/Screensaver */
+#define KEY_SCREENLOCK         KEY_COFFEE
+#define KEY_DIRECTION          153
+#define KEY_CYCLEWINDOWS       154
+#define KEY_MAIL               155
+#define KEY_BOOKMARKS          156     /* AC Bookmarks */
+#define KEY_COMPUTER           157
+#define KEY_BACK               158     /* AC Back */
+#define KEY_FORWARD            159     /* AC Forward */
+#define KEY_CLOSECD            160
+#define KEY_EJECTCD            161
+#define KEY_EJECTCLOSECD       162
+#define KEY_NEXTSONG           163
+#define KEY_PLAYPAUSE          164
+#define KEY_PREVIOUSSONG       165
+#define KEY_STOPCD             166
+#define KEY_RECORD             167
+#define KEY_REWIND             168
+#define KEY_PHONE              169     /* Media Select Telephone */
+#define KEY_ISO                        170
+#define KEY_CONFIG             171     /* AL Consumer Control Configuration */
+#define KEY_HOMEPAGE           172     /* AC Home */
+#define KEY_REFRESH            173     /* AC Refresh */
+#define KEY_EXIT               174     /* AC Exit */
+#define KEY_MOVE               175
+#define KEY_EDIT               176
+#define KEY_SCROLLUP           177
+#define KEY_SCROLLDOWN         178
+#define KEY_KPLEFTPAREN                179
+#define KEY_KPRIGHTPAREN       180
+#define KEY_NEW                        181     /* AC New */
+#define KEY_REDO               182     /* AC Redo/Repeat */
+
+#define KEY_F13                        183
+#define KEY_F14                        184
+#define KEY_F15                        185
+#define KEY_F16                        186
+#define KEY_F17                        187
+#define KEY_F18                        188
+#define KEY_F19                        189
+#define KEY_F20                        190
+#define KEY_F21                        191
+#define KEY_F22                        192
+#define KEY_F23                        193
+#define KEY_F24                        194
+
+#define KEY_PLAYCD             200
+#define KEY_PAUSECD            201
+#define KEY_PROG3              202
+#define KEY_PROG4              203
+#define KEY_DASHBOARD          204     /* AL Dashboard */
+#define KEY_SUSPEND            205
+#define KEY_CLOSE              206     /* AC Close */
+#define KEY_PLAY               207
+#define KEY_FASTFORWARD                208
+#define KEY_BASSBOOST          209
+#define KEY_PRINT              210     /* AC Print */
+#define KEY_HP                 211
+#define KEY_CAMERA             212
+#define KEY_SOUND              213
+#define KEY_QUESTION           214
+#define KEY_EMAIL              215
+#define KEY_CHAT               216
+#define KEY_SEARCH             217
+#define KEY_CONNECT            218
+#define KEY_FINANCE            219     /* AL Checkbook/Finance */
+#define KEY_SPORT              220
+#define KEY_SHOP               221
+#define KEY_ALTERASE           222
+#define KEY_CANCEL             223     /* AC Cancel */
+#define KEY_BRIGHTNESSDOWN     224
+#define KEY_BRIGHTNESSUP       225
+#define KEY_MEDIA              226
+
+#define KEY_SWITCHVIDEOMODE    227     /* Cycle between available video
+                                          outputs (Monitor/LCD/TV-out/etc) */
+#define KEY_KBDILLUMTOGGLE     228
+#define KEY_KBDILLUMDOWN       229
+#define KEY_KBDILLUMUP         230
+
+#define KEY_SEND               231     /* AC Send */
+#define KEY_REPLY              232     /* AC Reply */
+#define KEY_FORWARDMAIL                233     /* AC Forward Msg */
+#define KEY_SAVE               234     /* AC Save */
+#define KEY_DOCUMENTS          235
+
+#define KEY_BATTERY            236
+
+#define KEY_BLUETOOTH          237
+#define KEY_WLAN               238
+#define KEY_UWB                        239
+
+#define KEY_UNKNOWN            240
+
+#define KEY_VIDEO_NEXT         241     /* drive next video source */
+#define KEY_VIDEO_PREV         242     /* drive previous video source */
+#define KEY_BRIGHTNESS_CYCLE   243     /* brightness up, after max is min */
+#define KEY_BRIGHTNESS_AUTO    244     /* Set Auto Brightness: manual
+                                         brightness control is off,
+                                         rely on ambient */
+#define KEY_BRIGHTNESS_ZERO    KEY_BRIGHTNESS_AUTO
+#define KEY_DISPLAY_OFF                245     /* display device to off state */
+
+#define KEY_WWAN               246     /* Wireless WAN (LTE, UMTS, GSM, etc.) */
+#define KEY_WIMAX              KEY_WWAN
+#define KEY_RFKILL             247     /* Key that controls all radios */
+
+#define KEY_MICMUTE            248     /* Mute / unmute the microphone */
+
+/* Code 255 is reserved for special needs of AT keyboard driver */
+
+#define BTN_MISC               0x100
+#define BTN_0                  0x100
+#define BTN_1                  0x101
+#define BTN_2                  0x102
+#define BTN_3                  0x103
+#define BTN_4                  0x104
+#define BTN_5                  0x105
+#define BTN_6                  0x106
+#define BTN_7                  0x107
+#define BTN_8                  0x108
+#define BTN_9                  0x109
+
+#define BTN_MOUSE              0x110
+#define BTN_LEFT               0x110
+#define BTN_RIGHT              0x111
+#define BTN_MIDDLE             0x112
+#define BTN_SIDE               0x113
+#define BTN_EXTRA              0x114
+#define BTN_FORWARD            0x115
+#define BTN_BACK               0x116
+#define BTN_TASK               0x117
+
+#define BTN_JOYSTICK           0x120
+#define BTN_TRIGGER            0x120
+#define BTN_THUMB              0x121
+#define BTN_THUMB2             0x122
+#define BTN_TOP                        0x123
+#define BTN_TOP2               0x124
+#define BTN_PINKIE             0x125
+#define BTN_BASE               0x126
+#define BTN_BASE2              0x127
+#define BTN_BASE3              0x128
+#define BTN_BASE4              0x129
+#define BTN_BASE5              0x12a
+#define BTN_BASE6              0x12b
+#define BTN_DEAD               0x12f
+
+#define BTN_GAMEPAD            0x130
+#define BTN_SOUTH              0x130
+#define BTN_A                  BTN_SOUTH
+#define BTN_EAST               0x131
+#define BTN_B                  BTN_EAST
+#define BTN_C                  0x132
+#define BTN_NORTH              0x133
+#define BTN_X                  BTN_NORTH
+#define BTN_WEST               0x134
+#define BTN_Y                  BTN_WEST
+#define BTN_Z                  0x135
+#define BTN_TL                 0x136
+#define BTN_TR                 0x137
+#define BTN_TL2                        0x138
+#define BTN_TR2                        0x139
+#define BTN_SELECT             0x13a
+#define BTN_START              0x13b
+#define BTN_MODE               0x13c
+#define BTN_THUMBL             0x13d
+#define BTN_THUMBR             0x13e
+
+#define BTN_DIGI               0x140
+#define BTN_TOOL_PEN           0x140
+#define BTN_TOOL_RUBBER                0x141
+#define BTN_TOOL_BRUSH         0x142
+#define BTN_TOOL_PENCIL                0x143
+#define BTN_TOOL_AIRBRUSH      0x144
+#define BTN_TOOL_FINGER                0x145
+#define BTN_TOOL_MOUSE         0x146
+#define BTN_TOOL_LENS          0x147
+#define BTN_TOOL_QUINTTAP      0x148   /* Five fingers on trackpad */
+#define BTN_TOUCH              0x14a
+#define BTN_STYLUS             0x14b
+#define BTN_STYLUS2            0x14c
+#define BTN_TOOL_DOUBLETAP     0x14d
+#define BTN_TOOL_TRIPLETAP     0x14e
+#define BTN_TOOL_QUADTAP       0x14f   /* Four fingers on trackpad */
+
+#define BTN_WHEEL              0x150
+#define BTN_GEAR_DOWN          0x150
+#define BTN_GEAR_UP            0x151
+
+#define KEY_OK                 0x160
+#define KEY_SELECT             0x161
+#define KEY_GOTO               0x162
+#define KEY_CLEAR              0x163
+#define KEY_POWER2             0x164
+#define KEY_OPTION             0x165
+#define KEY_INFO               0x166   /* AL OEM Features/Tips/Tutorial */
+#define KEY_TIME               0x167
+#define KEY_VENDOR             0x168
+#define KEY_ARCHIVE            0x169
+#define KEY_PROGRAM            0x16a   /* Media Select Program Guide */
+#define KEY_CHANNEL            0x16b
+#define KEY_FAVORITES          0x16c
+#define KEY_EPG                        0x16d
+#define KEY_PVR                        0x16e   /* Media Select Home */
+#define KEY_MHP                        0x16f
+#define KEY_LANGUAGE           0x170
+#define KEY_TITLE              0x171
+#define KEY_SUBTITLE           0x172
+#define KEY_ANGLE              0x173
+#define KEY_ZOOM               0x174
+#define KEY_MODE               0x175
+#define KEY_KEYBOARD           0x176
+#define KEY_SCREEN             0x177
+#define KEY_PC                 0x178   /* Media Select Computer */
+#define KEY_TV                 0x179   /* Media Select TV */
+#define KEY_TV2                        0x17a   /* Media Select Cable */
+#define KEY_VCR                        0x17b   /* Media Select VCR */
+#define KEY_VCR2               0x17c   /* VCR Plus */
+#define KEY_SAT                        0x17d   /* Media Select Satellite */
+#define KEY_SAT2               0x17e
+#define KEY_CD                 0x17f   /* Media Select CD */
+#define KEY_TAPE               0x180   /* Media Select Tape */
+#define KEY_RADIO              0x181
+#define KEY_TUNER              0x182   /* Media Select Tuner */
+#define KEY_PLAYER             0x183
+#define KEY_TEXT               0x184
+#define KEY_DVD                        0x185   /* Media Select DVD */
+#define KEY_AUX                        0x186
+#define KEY_MP3                        0x187
+#define KEY_AUDIO              0x188   /* AL Audio Browser */
+#define KEY_VIDEO              0x189   /* AL Movie Browser */
+#define KEY_DIRECTORY          0x18a
+#define KEY_LIST               0x18b
+#define KEY_MEMO               0x18c   /* Media Select Messages */
+#define KEY_CALENDAR           0x18d
+#define KEY_RED                        0x18e
+#define KEY_GREEN              0x18f
+#define KEY_YELLOW             0x190
+#define KEY_BLUE               0x191
+#define KEY_CHANNELUP          0x192   /* Channel Increment */
+#define KEY_CHANNELDOWN                0x193   /* Channel Decrement */
+#define KEY_FIRST              0x194
+#define KEY_LAST               0x195   /* Recall Last */
+#define KEY_AB                 0x196
+#define KEY_NEXT               0x197
+#define KEY_RESTART            0x198
+#define KEY_SLOW               0x199
+#define KEY_SHUFFLE            0x19a
+#define KEY_BREAK              0x19b
+#define KEY_PREVIOUS           0x19c
+#define KEY_DIGITS             0x19d
+#define KEY_TEEN               0x19e
+#define KEY_TWEN               0x19f
+#define KEY_VIDEOPHONE         0x1a0   /* Media Select Video Phone */
+#define KEY_GAMES              0x1a1   /* Media Select Games */
+#define KEY_ZOOMIN             0x1a2   /* AC Zoom In */
+#define KEY_ZOOMOUT            0x1a3   /* AC Zoom Out */
+#define KEY_ZOOMRESET          0x1a4   /* AC Zoom */
+#define KEY_WORDPROCESSOR      0x1a5   /* AL Word Processor */
+#define KEY_EDITOR             0x1a6   /* AL Text Editor */
+#define KEY_SPREADSHEET                0x1a7   /* AL Spreadsheet */
+#define KEY_GRAPHICSEDITOR     0x1a8   /* AL Graphics Editor */
+#define KEY_PRESENTATION       0x1a9   /* AL Presentation App */
+#define KEY_DATABASE           0x1aa   /* AL Database App */
+#define KEY_NEWS               0x1ab   /* AL Newsreader */
+#define KEY_VOICEMAIL          0x1ac   /* AL Voicemail */
+#define KEY_ADDRESSBOOK                0x1ad   /* AL Contacts/Address Book */
+#define KEY_MESSENGER          0x1ae   /* AL Instant Messaging */
+#define KEY_DISPLAYTOGGLE      0x1af   /* Turn display (LCD) on and off */
+#define KEY_BRIGHTNESS_TOGGLE  KEY_DISPLAYTOGGLE
+#define KEY_SPELLCHECK         0x1b0   /* AL Spell Check */
+#define KEY_LOGOFF             0x1b1   /* AL Logoff */
+
+#define KEY_DOLLAR             0x1b2
+#define KEY_EURO               0x1b3
+
+#define KEY_FRAMEBACK          0x1b4   /* Consumer - transport controls */
+#define KEY_FRAMEFORWARD       0x1b5
+#define KEY_CONTEXT_MENU       0x1b6   /* GenDesc - system context menu */
+#define KEY_MEDIA_REPEAT       0x1b7   /* Consumer - transport control */
+#define KEY_10CHANNELSUP       0x1b8   /* 10 channels up (10+) */
+#define KEY_10CHANNELSDOWN     0x1b9   /* 10 channels down (10-) */
+#define KEY_IMAGES             0x1ba   /* AL Image Browser */
+
+#define KEY_DEL_EOL            0x1c0
+#define KEY_DEL_EOS            0x1c1
+#define KEY_INS_LINE           0x1c2
+#define KEY_DEL_LINE           0x1c3
+
+#define KEY_FN                 0x1d0
+#define KEY_FN_ESC             0x1d1
+#define KEY_FN_F1              0x1d2
+#define KEY_FN_F2              0x1d3
+#define KEY_FN_F3              0x1d4
+#define KEY_FN_F4              0x1d5
+#define KEY_FN_F5              0x1d6
+#define KEY_FN_F6              0x1d7
+#define KEY_FN_F7              0x1d8
+#define KEY_FN_F8              0x1d9
+#define KEY_FN_F9              0x1da
+#define KEY_FN_F10             0x1db
+#define KEY_FN_F11             0x1dc
+#define KEY_FN_F12             0x1dd
+#define KEY_FN_1               0x1de
+#define KEY_FN_2               0x1df
+#define KEY_FN_D               0x1e0
+#define KEY_FN_E               0x1e1
+#define KEY_FN_F               0x1e2
+#define KEY_FN_S               0x1e3
+#define KEY_FN_B               0x1e4
+
+#define KEY_BRL_DOT1           0x1f1
+#define KEY_BRL_DOT2           0x1f2
+#define KEY_BRL_DOT3           0x1f3
+#define KEY_BRL_DOT4           0x1f4
+#define KEY_BRL_DOT5           0x1f5
+#define KEY_BRL_DOT6           0x1f6
+#define KEY_BRL_DOT7           0x1f7
+#define KEY_BRL_DOT8           0x1f8
+#define KEY_BRL_DOT9           0x1f9
+#define KEY_BRL_DOT10          0x1fa
+
+#define KEY_NUMERIC_0          0x200   /* used by phones, remote controls, */
+#define KEY_NUMERIC_1          0x201   /* and other keypads */
+#define KEY_NUMERIC_2          0x202
+#define KEY_NUMERIC_3          0x203
+#define KEY_NUMERIC_4          0x204
+#define KEY_NUMERIC_5          0x205
+#define KEY_NUMERIC_6          0x206
+#define KEY_NUMERIC_7          0x207
+#define KEY_NUMERIC_8          0x208
+#define KEY_NUMERIC_9          0x209
+#define KEY_NUMERIC_STAR       0x20a
+#define KEY_NUMERIC_POUND      0x20b
+
+#define KEY_CAMERA_FOCUS       0x210
+#define KEY_WPS_BUTTON         0x211   /* WiFi Protected Setup key */
+
+#define KEY_TOUCHPAD_TOGGLE    0x212   /* Request switch touchpad on or off */
+#define KEY_TOUCHPAD_ON                0x213
+#define KEY_TOUCHPAD_OFF       0x214
+
+#define KEY_CAMERA_ZOOMIN      0x215
+#define KEY_CAMERA_ZOOMOUT     0x216
+#define KEY_CAMERA_UP          0x217
+#define KEY_CAMERA_DOWN                0x218
+#define KEY_CAMERA_LEFT                0x219
+#define KEY_CAMERA_RIGHT       0x21a
+
+#define KEY_ATTENDANT_ON       0x21b
+#define KEY_ATTENDANT_OFF      0x21c
+#define KEY_ATTENDANT_TOGGLE   0x21d   /* Attendant call on or off */
+#define KEY_LIGHTS_TOGGLE      0x21e   /* Reading light on or off */
+
+#define BTN_DPAD_UP            0x220
+#define BTN_DPAD_DOWN          0x221
+#define BTN_DPAD_LEFT          0x222
+#define BTN_DPAD_RIGHT         0x223
+
+#define KEY_ALS_TOGGLE         0x230   /* Ambient light sensor */
+
+#define KEY_BUTTONCONFIG               0x240   /* AL Button Configuration */
+#define KEY_TASKMANAGER                0x241   /* AL Task/Project Manager */
+#define KEY_JOURNAL            0x242   /* AL Log/Journal/Timecard */
+#define KEY_CONTROLPANEL               0x243   /* AL Control Panel */
+#define KEY_APPSELECT          0x244   /* AL Select Task/Application */
+#define KEY_SCREENSAVER                0x245   /* AL Screen Saver */
+#define KEY_VOICECOMMAND               0x246   /* Listening Voice Command */
+
+#define KEY_BRIGHTNESS_MIN             0x250   /* Set Brightness to Minimum */
+#define KEY_BRIGHTNESS_MAX             0x251   /* Set Brightness to Maximum */
+
+#define BTN_TRIGGER_HAPPY              0x2c0
+#define BTN_TRIGGER_HAPPY1             0x2c0
+#define BTN_TRIGGER_HAPPY2             0x2c1
+#define BTN_TRIGGER_HAPPY3             0x2c2
+#define BTN_TRIGGER_HAPPY4             0x2c3
+#define BTN_TRIGGER_HAPPY5             0x2c4
+#define BTN_TRIGGER_HAPPY6             0x2c5
+#define BTN_TRIGGER_HAPPY7             0x2c6
+#define BTN_TRIGGER_HAPPY8             0x2c7
+#define BTN_TRIGGER_HAPPY9             0x2c8
+#define BTN_TRIGGER_HAPPY10            0x2c9
+#define BTN_TRIGGER_HAPPY11            0x2ca
+#define BTN_TRIGGER_HAPPY12            0x2cb
+#define BTN_TRIGGER_HAPPY13            0x2cc
+#define BTN_TRIGGER_HAPPY14            0x2cd
+#define BTN_TRIGGER_HAPPY15            0x2ce
+#define BTN_TRIGGER_HAPPY16            0x2cf
+#define BTN_TRIGGER_HAPPY17            0x2d0
+#define BTN_TRIGGER_HAPPY18            0x2d1
+#define BTN_TRIGGER_HAPPY19            0x2d2
+#define BTN_TRIGGER_HAPPY20            0x2d3
+#define BTN_TRIGGER_HAPPY21            0x2d4
+#define BTN_TRIGGER_HAPPY22            0x2d5
+#define BTN_TRIGGER_HAPPY23            0x2d6
+#define BTN_TRIGGER_HAPPY24            0x2d7
+#define BTN_TRIGGER_HAPPY25            0x2d8
+#define BTN_TRIGGER_HAPPY26            0x2d9
+#define BTN_TRIGGER_HAPPY27            0x2da
+#define BTN_TRIGGER_HAPPY28            0x2db
+#define BTN_TRIGGER_HAPPY29            0x2dc
+#define BTN_TRIGGER_HAPPY30            0x2dd
+#define BTN_TRIGGER_HAPPY31            0x2de
+#define BTN_TRIGGER_HAPPY32            0x2df
+#define BTN_TRIGGER_HAPPY33            0x2e0
+#define BTN_TRIGGER_HAPPY34            0x2e1
+#define BTN_TRIGGER_HAPPY35            0x2e2
+#define BTN_TRIGGER_HAPPY36            0x2e3
+#define BTN_TRIGGER_HAPPY37            0x2e4
+#define BTN_TRIGGER_HAPPY38            0x2e5
+#define BTN_TRIGGER_HAPPY39            0x2e6
+#define BTN_TRIGGER_HAPPY40            0x2e7
+
+/* We avoid low common keys in module aliases so they don't get huge. */
+#define KEY_MIN_INTERESTING    KEY_MUTE
+#define KEY_MAX                        0x2ff
+#define KEY_CNT                        (KEY_MAX+1)
+
+/*
+ * Relative axes
+ */
+
+#define REL_X                  0x00
+#define REL_Y                  0x01
+#define REL_Z                  0x02
+#define REL_RX                 0x03
+#define REL_RY                 0x04
+#define REL_RZ                 0x05
+#define REL_HWHEEL             0x06
+#define REL_DIAL               0x07
+#define REL_WHEEL              0x08
+#define REL_MISC               0x09
+#define REL_MAX                        0x0f
+#define REL_CNT                        (REL_MAX+1)
+
+/*
+ * Absolute axes
+ */
+
+#define ABS_X                  0x00
+#define ABS_Y                  0x01
+#define ABS_Z                  0x02
+#define ABS_RX                 0x03
+#define ABS_RY                 0x04
+#define ABS_RZ                 0x05
+#define ABS_THROTTLE           0x06
+#define ABS_RUDDER             0x07
+#define ABS_WHEEL              0x08
+#define ABS_GAS                        0x09
+#define ABS_BRAKE              0x0a
+#define ABS_HAT0X              0x10
+#define ABS_HAT0Y              0x11
+#define ABS_HAT1X              0x12
+#define ABS_HAT1Y              0x13
+#define ABS_HAT2X              0x14
+#define ABS_HAT2Y              0x15
+#define ABS_HAT3X              0x16
+#define ABS_HAT3Y              0x17
+#define ABS_PRESSURE           0x18
+#define ABS_DISTANCE           0x19
+#define ABS_TILT_X             0x1a
+#define ABS_TILT_Y             0x1b
+#define ABS_TOOL_WIDTH         0x1c
+
+#define ABS_VOLUME             0x20
+
+#define ABS_MISC               0x28
+
+#define ABS_MT_SLOT            0x2f    /* MT slot being modified */
+#define ABS_MT_TOUCH_MAJOR     0x30    /* Major axis of touching ellipse */
+#define ABS_MT_TOUCH_MINOR     0x31    /* Minor axis (omit if circular) */
+#define ABS_MT_WIDTH_MAJOR     0x32    /* Major axis of approaching ellipse */
+#define ABS_MT_WIDTH_MINOR     0x33    /* Minor axis (omit if circular) */
+#define ABS_MT_ORIENTATION     0x34    /* Ellipse orientation */
+#define ABS_MT_POSITION_X      0x35    /* Center X touch position */
+#define ABS_MT_POSITION_Y      0x36    /* Center Y touch position */
+#define ABS_MT_TOOL_TYPE       0x37    /* Type of touching device */
+#define ABS_MT_BLOB_ID         0x38    /* Group a set of packets as a blob */
+#define ABS_MT_TRACKING_ID     0x39    /* Unique ID of initiated contact */
+#define ABS_MT_PRESSURE                0x3a    /* Pressure on contact area */
+#define ABS_MT_DISTANCE                0x3b    /* Contact hover distance */
+#define ABS_MT_TOOL_X          0x3c    /* Center X tool position */
+#define ABS_MT_TOOL_Y          0x3d    /* Center Y tool position */
+
+
+#define ABS_MAX                        0x3f
+#define ABS_CNT                        (ABS_MAX+1)
+
+/*
+ * Switch events
+ */
+
+#define SW_LID                 0x00  /* set = lid shut */
+#define SW_TABLET_MODE         0x01  /* set = tablet mode */
+#define SW_HEADPHONE_INSERT    0x02  /* set = inserted */
+#define SW_RFKILL_ALL          0x03  /* rfkill master switch, type "any"
+                                        set = radio enabled */
+#define SW_RADIO               SW_RFKILL_ALL   /* deprecated */
+#define SW_MICROPHONE_INSERT   0x04  /* set = inserted */
+#define SW_DOCK                        0x05  /* set = plugged into dock */
+#define SW_LINEOUT_INSERT      0x06  /* set = inserted */
+#define SW_JACK_PHYSICAL_INSERT 0x07  /* set = mechanical switch set */
+#define SW_VIDEOOUT_INSERT     0x08  /* set = inserted */
+#define SW_CAMERA_LENS_COVER   0x09  /* set = lens covered */
+#define SW_KEYPAD_SLIDE                0x0a  /* set = keypad slide out */
+#define SW_FRONT_PROXIMITY     0x0b  /* set = front proximity sensor active */
+#define SW_ROTATE_LOCK         0x0c  /* set = rotate locked/disabled */
+#define SW_LINEIN_INSERT       0x0d  /* set = inserted */
+#define SW_MUTE_DEVICE         0x0e  /* set = device disabled */
+#define SW_MAX                 0x0f
+#define SW_CNT                 (SW_MAX+1)
+
+/*
+ * Misc events
+ */
+
+#define MSC_SERIAL             0x00
+#define MSC_PULSELED           0x01
+#define MSC_GESTURE            0x02
+#define MSC_RAW                        0x03
+#define MSC_SCAN               0x04
+#define MSC_TIMESTAMP          0x05
+#define MSC_MAX                        0x07
+#define MSC_CNT                        (MSC_MAX+1)
+
+/*
+ * LEDs
+ */
+
+#define LED_NUML               0x00
+#define LED_CAPSL              0x01
+#define LED_SCROLLL            0x02
+#define LED_COMPOSE            0x03
+#define LED_KANA               0x04
+#define LED_SLEEP              0x05
+#define LED_SUSPEND            0x06
+#define LED_MUTE               0x07
+#define LED_MISC               0x08
+#define LED_MAIL               0x09
+#define LED_CHARGING           0x0a
+#define LED_MAX                        0x0f
+#define LED_CNT                        (LED_MAX+1)
+
+/*
+ * Autorepeat values
+ */
+
+#define REP_DELAY              0x00
+#define REP_PERIOD             0x01
+#define REP_MAX                        0x01
+#define REP_CNT                        (REP_MAX+1)
+
+/*
+ * Sounds
+ */
+
+#define SND_CLICK              0x00
+#define SND_BELL               0x01
+#define SND_TONE               0x02
+#define SND_MAX                        0x07
+#define SND_CNT                        (SND_MAX+1)
+
+/*
+ * IDs.
+ */
+
+#define ID_BUS                 0
+#define ID_VENDOR              1
+#define ID_PRODUCT             2
+#define ID_VERSION             3
+
+#define BUS_PCI                        0x01
+#define BUS_ISAPNP             0x02
+#define BUS_USB                        0x03
+#define BUS_HIL                        0x04
+#define BUS_BLUETOOTH          0x05
+#define BUS_VIRTUAL            0x06
+
+#define BUS_ISA                        0x10
+#define BUS_I8042              0x11
+#define BUS_XTKBD              0x12
+#define BUS_RS232              0x13
+#define BUS_GAMEPORT           0x14
+#define BUS_PARPORT            0x15
+#define BUS_AMIGA              0x16
+#define BUS_ADB                        0x17
+#define BUS_I2C                        0x18
+#define BUS_HOST               0x19
+#define BUS_GSC                        0x1A
+#define BUS_ATARI              0x1B
+#define BUS_SPI                        0x1C
+
+/*
+ * MT_TOOL types
+ */
+#define MT_TOOL_FINGER         0
+#define MT_TOOL_PEN            1
+#define MT_TOOL_MAX            1
+
+/*
+ * Values describing the status of a force-feedback effect
+ */
+#define FF_STATUS_STOPPED      0x00
+#define FF_STATUS_PLAYING      0x01
+#define FF_STATUS_MAX          0x01