/**
* filename:imx6_key_drv.c
* description: matrix key driver for imx6.
* author:shell.albert@gmail.com
* date: September 1,2015.
*
* three gpio keys are connected to imx6 through different GPIO.
* up/down key: GPIO04/SLEEP_WAKE
* led key:EIM_BCLK/VOL+
* left/right key:CSI0_DATA_EN/VOL-
* ok key:NANDF_CS0
* return key:NANDF_CS1
*
* attention here.
* the mdev rules must be enabled before use this driver.
* do the following work to make it works.
* /etc/init.d/rcS
* #mount partitions
* mkdir /dev/pts -p
* mount -t devpts devpts /dev/pts
* mount -a
* echo /sbin/mdev > /proc/sys/kernel/hotplug
* mdev -s
*
* /etc/mdev.conf
* # system all-writable devices
* full 0:0 0666
* null 0:0 0666
* ptmx 0:0 0666
* random 0:0 0666
* tty 0:0 0666
* zero 0:0 0666
* # i2c devices
* i2c-0 0:0 0666 =i2c/0
* i2c-1 0:0 0666 =i2c/1
* # frame buffer devices
* fb[0-9] 0:0 0666
* # input devices
* mice 0:0 0660 =input/
* mouse.* 0:0 0660 =input/
* event.* 0:0 0660 =input/
* ts.* 0:0 0660 =input/
*/
/**
Event: time 1441159728.919925, -------------- Report Sync ------------
Event: time 1441159733.423896, type 4 (Misc), code 4 (ScanCode), value 70052
Event: time 1441159733.423896, type 1 (Key), code 103 (Up), value 1
Event: time 1441159733.423896, -------------- Report Sync ------------
Event: time 1441159733.511935, type 4 (Misc), code 4 (ScanCode), value 70052
Event: time 1441159733.511935, type 1 (Key), code 103 (Up), value 0
Event: time 1441159733.511935, -------------- Report Sync ------------
Event: time 1441159735.431922, type 4 (Misc), code 4 (ScanCode), value 70050
Event: time 1441159735.431922, type 1 (Key), code 105 (Left), value 1
Event: time 1441159735.431922, -------------- Report Sync ------------
Event: time 1441159735.503919, type 4 (Misc), code 4 (ScanCode), value 70050
Event: time 1441159735.503919, type 1 (Key), code 105 (Left), value 0
Event: time 1441159735.503919, -------------- Report Sync ------------
Event: time 1441159739.127894, type 4 (Misc), code 4 (ScanCode), value 700e4
Event: time 1441159739.127894, type 1 (Key), code 97 (RightCtrl), value 1
Event: time 1441159739.127894, -------------- Report Sync ------------
Event: time 1441159739.263894, type 4 (Misc), code 4 (ScanCode), value 700e4
Event: time 1441159739.263894, type 1 (Key), code 97 (RightCtrl), value 0
Event: time 1441159739.263894, -------------- Report Sync ------------
Event: time 1441159742.103834, type 4 (Misc), code 4 (ScanCode), value 700e0
Event: time 1441159742.103834, type 1 (Key), code 29 (LeftControl), value 1
Event: time 1441159742.103834, -------------- Report Sync ------------
Event: time 1441159742.207873, type 4 (Misc), code 4 (ScanCode), value 700e0
Event: time 1441159742.207873, type 1 (Key), code 29 (LeftControl), value 0
Event: time 1441159742.207873, -------------- Report Sync ------------
*/
/**
* PAD Mux registers.
* related register define here.
* I/O are multiplex,so we choose the right mode.
*/
#define IOMUXC_SW_MUX_CTL_PAD_GPIO04 0x20E0238 //GPIO1_IO04
#define IOMUXC_SW_MUX_CTL_PAD_EIM_BCLK
* filename:imx6_key_drv.c
* description: matrix key driver for imx6.
* author:shell.albert@gmail.com
* date: September 1,2015.
*
* three gpio keys are connected to imx6 through different GPIO.
* up/down key: GPIO04/SLEEP_WAKE
* led key:EIM_BCLK/VOL+
* left/right key:CSI0_DATA_EN/VOL-
* ok key:NANDF_CS0
* return key:NANDF_CS1
*
* attention here.
* the mdev rules must be enabled before use this driver.
* do the following work to make it works.
* /etc/init.d/rcS
* #mount partitions
* mkdir /dev/pts -p
* mount -t devpts devpts /dev/pts
* mount -a
* echo /sbin/mdev > /proc/sys/kernel/hotplug
* mdev -s
*
* /etc/mdev.conf
* # system all-writable devices
* full 0:0 0666
* null 0:0 0666
* ptmx 0:0 0666
* random 0:0 0666
* tty 0:0 0666
* zero 0:0 0666
* # i2c devices
* i2c-0 0:0 0666 =i2c/0
* i2c-1 0:0 0666 =i2c/1
* # frame buffer devices
* fb[0-9] 0:0 0666
* # input devices
* mice 0:0 0660 =input/
* mouse.* 0:0 0660 =input/
* event.* 0:0 0660 =input/
* ts.* 0:0 0660 =input/
*/
/**
Event: time 1441159728.919925, -------------- Report Sync ------------
Event: time 1441159733.423896, type 4 (Misc), code 4 (ScanCode), value 70052
Event: time 1441159733.423896, type 1 (Key), code 103 (Up), value 1
Event: time 1441159733.423896, -------------- Report Sync ------------
Event: time 1441159733.511935, type 4 (Misc), code 4 (ScanCode), value 70052
Event: time 1441159733.511935, type 1 (Key), code 103 (Up), value 0
Event: time 1441159733.511935, -------------- Report Sync ------------
Event: time 1441159735.431922, type 4 (Misc), code 4 (ScanCode), value 70050
Event: time 1441159735.431922, type 1 (Key), code 105 (Left), value 1
Event: time 1441159735.431922, -------------- Report Sync ------------
Event: time 1441159735.503919, type 4 (Misc), code 4 (ScanCode), value 70050
Event: time 1441159735.503919, type 1 (Key), code 105 (Left), value 0
Event: time 1441159735.503919, -------------- Report Sync ------------
Event: time 1441159739.127894, type 4 (Misc), code 4 (ScanCode), value 700e4
Event: time 1441159739.127894, type 1 (Key), code 97 (RightCtrl), value 1
Event: time 1441159739.127894, -------------- Report Sync ------------
Event: time 1441159739.263894, type 4 (Misc), code 4 (ScanCode), value 700e4
Event: time 1441159739.263894, type 1 (Key), code 97 (RightCtrl), value 0
Event: time 1441159739.263894, -------------- Report Sync ------------
Event: time 1441159742.103834, type 4 (Misc), code 4 (ScanCode), value 700e0
Event: time 1441159742.103834, type 1 (Key), code 29 (LeftControl), value 1
Event: time 1441159742.103834, -------------- Report Sync ------------
Event: time 1441159742.207873, type 4 (Misc), code 4 (ScanCode), value 700e0
Event: time 1441159742.207873, type 1 (Key), code 29 (LeftControl), value 0
Event: time 1441159742.207873, -------------- Report Sync ------------
*/
/**
* PAD Mux registers.
* related register define here.
* I/O are multiplex,so we choose the right mode.
*/
#define IOMUXC_SW_MUX_CTL_PAD_GPIO04 0x20E0238 //GPIO1_IO04
#define IOMUXC_SW_MUX_CTL_PAD_EIM_BCLK