mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
remote: add remote driver to meson8b
PD#141217: enable remote driver for meson8b Change-Id: I0c09ce5a71fdc34eb010d03efd35be683c8d224c Signed-off-by: Zan Peng <zan.peng@amlogic.com>
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
#include <dt-bindings/gpio/meson8b-gpio.h>
|
||||
#include <dt-bindings/reset/amlogic,meson8b-reset.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/input/meson_rc.h>
|
||||
#include <dt-bindings/pwm/meson.h>
|
||||
#include "skeleton.dtsi"
|
||||
|
||||
@@ -567,7 +569,12 @@
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
remote_pins:remote_pin {
|
||||
mux {
|
||||
groups = "remote_input";
|
||||
function = "remote";
|
||||
};
|
||||
};
|
||||
uart_ao_a_pins: uart_ao_a {
|
||||
mux {
|
||||
groups = "uart_tx_ao_a", "uart_rx_ao_a";
|
||||
@@ -701,5 +708,163 @@ dwc2_b {
|
||||
clock-names = "saradc_clk";
|
||||
reg = <0xc1108680 0x30>;
|
||||
};
|
||||
remote:rc@c8100580 {
|
||||
compatible = "amlogic, aml_remote";
|
||||
dev_name = "meson-remote";
|
||||
reg = <0xc8100580 0x44>, /*Multi-format IR controller*/
|
||||
<0xc8100480 0x20>; /*Legacy IR controller*/
|
||||
status = "okay";
|
||||
protocol = <REMOTE_TYPE_NEC>;
|
||||
interrupts = <0 15 1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&remote_pins>;
|
||||
map = <&custom_maps>;
|
||||
max_frame_time = <200>; /*set software decoder max frame time*/
|
||||
};
|
||||
|
||||
custom_maps:custom_maps {
|
||||
mapnum = <3>;
|
||||
map0 = <&map_0>;
|
||||
map1 = <&map_1>;
|
||||
map2 = <&map_2>;
|
||||
map_0: map_0{
|
||||
mapname = "amlogic-remote-1";
|
||||
customcode = <0xfb04>;
|
||||
release_delay = <80>;
|
||||
size = <50>; /*keymap size*/
|
||||
keymap = <REMOTE_KEY(0x47, KEY_0)
|
||||
REMOTE_KEY(0x13, KEY_1)
|
||||
REMOTE_KEY(0x10, KEY_2)
|
||||
REMOTE_KEY(0x11, KEY_3)
|
||||
REMOTE_KEY(0x0F, KEY_4)
|
||||
REMOTE_KEY(0x0C, KEY_5)
|
||||
REMOTE_KEY(0x0D, KEY_6)
|
||||
REMOTE_KEY(0x0B, KEY_7)
|
||||
REMOTE_KEY(0x08, KEY_8)
|
||||
REMOTE_KEY(0x09, KEY_9)
|
||||
REMOTE_KEY(0x5C, KEY_RIGHTCTRL)
|
||||
REMOTE_KEY(0x51, KEY_F3)
|
||||
REMOTE_KEY(0x50, KEY_F4)
|
||||
REMOTE_KEY(0x40, KEY_F5)
|
||||
REMOTE_KEY(0x4d, KEY_F6)
|
||||
REMOTE_KEY(0x43, KEY_F7)
|
||||
REMOTE_KEY(0x17, KEY_F8)
|
||||
REMOTE_KEY(0x00, KEY_F9)
|
||||
REMOTE_KEY(0x01, KEY_F10)
|
||||
REMOTE_KEY(0x16, KEY_F11)
|
||||
REMOTE_KEY(0x49, KEY_BACKSPACE)
|
||||
REMOTE_KEY(0x06, KEY_PROPS)
|
||||
REMOTE_KEY(0x14, KEY_UNDO)
|
||||
REMOTE_KEY(0x44, KEY_UP)
|
||||
REMOTE_KEY(0x1D, KEY_DOWN)
|
||||
REMOTE_KEY(0x1C, KEY_LEFT)
|
||||
REMOTE_KEY(0x48, KEY_RIGHT)
|
||||
REMOTE_KEY(0x53, KEY_LEFTMETA)
|
||||
REMOTE_KEY(0x45, KEY_PAGEUP)
|
||||
REMOTE_KEY(0x19, KEY_PAGEDOWN)
|
||||
REMOTE_KEY(0x52, KEY_PAUSE)
|
||||
REMOTE_KEY(0x05, KEY_HANGEUL)
|
||||
REMOTE_KEY(0x59, KEY_HANJA)
|
||||
REMOTE_KEY(0x1b, KEY_SCALE)
|
||||
REMOTE_KEY(0x04, KEY_KPCOMMA)
|
||||
REMOTE_KEY(0x1A, KEY_POWER)
|
||||
REMOTE_KEY(0x0A, KEY_TAB)
|
||||
REMOTE_KEY(0x0e, KEY_MUTE)
|
||||
REMOTE_KEY(0x1F, KEY_HOME)
|
||||
REMOTE_KEY(0x1e, KEY_FRONT)
|
||||
REMOTE_KEY(0x07, KEY_COPY)
|
||||
REMOTE_KEY(0x12, KEY_OPEN)
|
||||
REMOTE_KEY(0x54, KEY_PASTE)
|
||||
REMOTE_KEY(0x02, KEY_FIND)
|
||||
REMOTE_KEY(0x4f, KEY_A)
|
||||
REMOTE_KEY(0x42, KEY_B)
|
||||
REMOTE_KEY(0x5d, KEY_C)
|
||||
REMOTE_KEY(0x4c, KEY_D)
|
||||
REMOTE_KEY(0x58, KEY_CUT)
|
||||
REMOTE_KEY(0x55, KEY_CALC)>;
|
||||
};
|
||||
map_1: map_1{
|
||||
mapname = "amlogic-remote-2";
|
||||
customcode = <0xfe01>;
|
||||
release_delay = <80>;
|
||||
size = <53>;
|
||||
keymap = <REMOTE_KEY(0x01, KEY_1)
|
||||
REMOTE_KEY(0x02, KEY_2)
|
||||
REMOTE_KEY(0x03, KEY_3)
|
||||
REMOTE_KEY(0x04, KEY_4)
|
||||
REMOTE_KEY(0x05, KEY_5)
|
||||
REMOTE_KEY(0x06, KEY_6)
|
||||
REMOTE_KEY(0x07, KEY_7)
|
||||
REMOTE_KEY(0x08, KEY_8)
|
||||
REMOTE_KEY(0x09, KEY_9)
|
||||
REMOTE_KEY(0x0a, KEY_0)
|
||||
REMOTE_KEY(0x1F, KEY_FN_F1)
|
||||
REMOTE_KEY(0x15, KEY_MENU)
|
||||
REMOTE_KEY(0x16, KEY_TAB)
|
||||
REMOTE_KEY(0x0c, KEY_CHANNELUP)
|
||||
REMOTE_KEY(0x0d, KEY_CHANNELDOWN)
|
||||
REMOTE_KEY(0x0e, KEY_VOLUMEUP)
|
||||
REMOTE_KEY(0x0f, KEY_VOLUMEDOWN)
|
||||
REMOTE_KEY(0x11, KEY_HOME)
|
||||
REMOTE_KEY(0x1c, KEY_RIGHT)
|
||||
REMOTE_KEY(0x1b, KEY_LEFT)
|
||||
REMOTE_KEY(0x19, KEY_UP)
|
||||
REMOTE_KEY(0x1a, KEY_DOWN)
|
||||
REMOTE_KEY(0x1d, KEY_ENTER)
|
||||
REMOTE_KEY(0x17, KEY_MUTE)
|
||||
REMOTE_KEY(0x49, KEY_FINANCE)
|
||||
REMOTE_KEY(0x43, KEY_BACK)
|
||||
REMOTE_KEY(0x12, KEY_FN_F4)
|
||||
REMOTE_KEY(0x14, KEY_FN_F5)
|
||||
REMOTE_KEY(0x18, KEY_FN_F6)
|
||||
REMOTE_KEY(0x59, KEY_INFO)
|
||||
REMOTE_KEY(0x5a, KEY_STOPCD)
|
||||
REMOTE_KEY(0x10, KEY_POWER)
|
||||
REMOTE_KEY(0x42, KEY_PREVIOUSSONG)
|
||||
REMOTE_KEY(0x44, KEY_NEXTSONG)
|
||||
REMOTE_KEY(0x1e, KEY_REWIND)
|
||||
REMOTE_KEY(0x4b, KEY_FASTFORWARD)
|
||||
REMOTE_KEY(0x58, KEY_PLAYPAUSE)
|
||||
REMOTE_KEY(0x46, KEY_PROPS)
|
||||
REMOTE_KEY(0x40, KEY_UNDO)
|
||||
REMOTE_KEY(0x38, KEY_SCROLLLOCK)
|
||||
REMOTE_KEY(0x57, KEY_FN)
|
||||
REMOTE_KEY(0x5b, KEY_FN_ESC)
|
||||
REMOTE_KEY(0x54, KEY_RED)
|
||||
REMOTE_KEY(0x4c, KEY_GREEN)
|
||||
REMOTE_KEY(0x4e, KEY_YELLOW)
|
||||
REMOTE_KEY(0x55, KEY_BLUE)
|
||||
REMOTE_KEY(0x53, KEY_BLUETOOTH)
|
||||
REMOTE_KEY(0x52, KEY_WLAN)
|
||||
REMOTE_KEY(0x39, KEY_CAMERA)
|
||||
REMOTE_KEY(0x41, KEY_SOUND)
|
||||
REMOTE_KEY(0x0b, KEY_QUESTION)
|
||||
REMOTE_KEY(0x00, KEY_CHAT)
|
||||
REMOTE_KEY(0x13, KEY_SEARCH)>;
|
||||
};
|
||||
map_2: map_2{
|
||||
mapname = "amlogic-remote-3";
|
||||
customcode = <0xbd02>;
|
||||
release_delay = <80>;
|
||||
size = <17>;
|
||||
keymap = <REMOTE_KEY(0xca,103)
|
||||
REMOTE_KEY(0xd2,108)
|
||||
REMOTE_KEY(0x99,105)
|
||||
REMOTE_KEY(0xc1,106)
|
||||
REMOTE_KEY(0xce,97)
|
||||
REMOTE_KEY(0x45,116)
|
||||
REMOTE_KEY(0xc5,133)
|
||||
REMOTE_KEY(0x80,113)
|
||||
REMOTE_KEY(0xd0,15)
|
||||
REMOTE_KEY(0xd6,125)
|
||||
REMOTE_KEY(0x95,102)
|
||||
REMOTE_KEY(0xdd,104)
|
||||
REMOTE_KEY(0x8c,109)
|
||||
REMOTE_KEY(0x89,131)
|
||||
REMOTE_KEY(0x9c,130)
|
||||
REMOTE_KEY(0x9a,120)
|
||||
REMOTE_KEY(0xcd,121)>;
|
||||
};
|
||||
};
|
||||
};
|
||||
}; /* end of / */
|
||||
|
||||
@@ -64,6 +64,8 @@ CONFIG_AMLOGIC_CRYPTO=y
|
||||
CONFIG_AMLOGIC_CRYPTO_BLKMV=y
|
||||
CONFIG_AMLOGIC_INPUT=y
|
||||
CONFIG_AMLOGIC_SARADC=y
|
||||
CONFIG_AMLOGIC_REMOTE=y
|
||||
CONFIG_AMLOGIC_MESON_REMOTE=y
|
||||
CONFIG_AMLOGIC_EFUSE=y
|
||||
CONFIG_AMLOGIC_CPU_HOTPLUG=y
|
||||
CONFIG_AMLOGIC_PWM=y
|
||||
|
||||
@@ -173,7 +173,7 @@ static bool is_valid_custom(struct remote_dev *dev)
|
||||
|
||||
static bool is_next_repeat(struct remote_dev *dev)
|
||||
{
|
||||
unsigned int val;
|
||||
unsigned int val = 0;
|
||||
unsigned char fbusy = 0;
|
||||
unsigned char cnt;
|
||||
|
||||
@@ -228,7 +228,7 @@ static void amlremote_tasklet(unsigned long data)
|
||||
static irqreturn_t ir_interrupt(int irq, void *dev_id)
|
||||
{
|
||||
struct remote_chip *rc = (struct remote_chip *)dev_id;
|
||||
int contr_status;
|
||||
int contr_status = 0;
|
||||
int val = 0;
|
||||
u32 duration;
|
||||
char buf[50];
|
||||
|
||||
Reference in New Issue
Block a user