* [PATCH v2 0/3] Add ZTE zx-irdec remote control driver @ 2017-07-30 13:23 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-07-30 13:23 UTC (permalink / raw) To: Sean Young, Rob Herring Cc: Baoyou Xie, Xin Zhou, Jun Nie, linux-media, devicetree, linux-arm-kernel, Shawn Guo From: Shawn Guo <shawn.guo@linaro.org> The series adds dt-bindings and remote control driver for IRDEC block found on ZTE ZX family SoCs. Changes for v2: - Add one patch to move generic NEC scancode composing and protocol type detection code from ir_nec_decode() into an inline shared function, which can be reused by zx-irdec driver. Shawn Guo (3): rc: ir-nec-decoder: move scancode composing code into a shared function dt-bindings: add bindings document for zx-irdec rc: add zx-irdec remote control driver .../devicetree/bindings/media/zx-irdec.txt | 14 ++ drivers/media/rc/Kconfig | 11 ++ drivers/media/rc/Makefile | 1 + drivers/media/rc/ir-nec-decoder.c | 32 +--- drivers/media/rc/keymaps/Makefile | 3 +- drivers/media/rc/keymaps/rc-zx-irdec.c | 79 +++++++++ drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++ include/media/rc-core.h | 31 ++++ include/media/rc-map.h | 1 + 9 files changed, 325 insertions(+), 30 deletions(-) create mode 100644 Documentation/devicetree/bindings/media/zx-irdec.txt create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c create mode 100644 drivers/media/rc/zx-irdec.c -- 1.9.1 ^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 0/3] Add ZTE zx-irdec remote control driver @ 2017-07-30 13:23 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-07-30 13:23 UTC (permalink / raw) To: linux-arm-kernel From: Shawn Guo <shawn.guo@linaro.org> The series adds dt-bindings and remote control driver for IRDEC block found on ZTE ZX family SoCs. Changes for v2: - Add one patch to move generic NEC scancode composing and protocol type detection code from ir_nec_decode() into an inline shared function, which can be reused by zx-irdec driver. Shawn Guo (3): rc: ir-nec-decoder: move scancode composing code into a shared function dt-bindings: add bindings document for zx-irdec rc: add zx-irdec remote control driver .../devicetree/bindings/media/zx-irdec.txt | 14 ++ drivers/media/rc/Kconfig | 11 ++ drivers/media/rc/Makefile | 1 + drivers/media/rc/ir-nec-decoder.c | 32 +--- drivers/media/rc/keymaps/Makefile | 3 +- drivers/media/rc/keymaps/rc-zx-irdec.c | 79 +++++++++ drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++ include/media/rc-core.h | 31 ++++ include/media/rc-map.h | 1 + 9 files changed, 325 insertions(+), 30 deletions(-) create mode 100644 Documentation/devicetree/bindings/media/zx-irdec.txt create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c create mode 100644 drivers/media/rc/zx-irdec.c -- 1.9.1 ^ permalink raw reply [flat|nested] 27+ messages in thread
[parent not found: <1501420993-21977-1-git-send-email-shawnguo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>]
* [PATCH v2 1/3] rc: ir-nec-decoder: move scancode composing code into a shared function 2017-07-30 13:23 ` Shawn Guo (?) @ 2017-07-30 13:23 ` Shawn Guo -1 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-07-30 13:23 UTC (permalink / raw) To: Sean Young, Rob Herring Cc: Baoyou Xie, Xin Zhou, Jun Nie, linux-media-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Shawn Guo From: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> The NEC scancode composing and protocol type detection in ir_nec_decode() is generic enough to be a shared function. Let's create an inline function in rc-core.h, so that other remote control drivers can reuse this function to save some code. Signed-off-by: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> --- drivers/media/rc/ir-nec-decoder.c | 32 +++----------------------------- include/media/rc-core.h | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/drivers/media/rc/ir-nec-decoder.c b/drivers/media/rc/ir-nec-decoder.c index 3ce850314dca..b578c1e27c04 100644 --- a/drivers/media/rc/ir-nec-decoder.c +++ b/drivers/media/rc/ir-nec-decoder.c @@ -51,7 +51,6 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev) u32 scancode; enum rc_type rc_type; u8 address, not_address, command, not_command; - bool send_32bits = false; if (!is_timing_event(ev)) { if (ev.reset) @@ -161,34 +160,9 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev) command = bitrev8((data->bits >> 8) & 0xff); not_command = bitrev8((data->bits >> 0) & 0xff); - if ((command ^ not_command) != 0xff) { - IR_dprintk(1, "NEC checksum error: received 0x%08x\n", - data->bits); - send_32bits = true; - } - - if (send_32bits) { - /* NEC transport, but modified protocol, used by at - * least Apple and TiVo remotes */ - scancode = not_address << 24 | - address << 16 | - not_command << 8 | - command; - IR_dprintk(1, "NEC (modified) scancode 0x%08x\n", scancode); - rc_type = RC_TYPE_NEC32; - } else if ((address ^ not_address) != 0xff) { - /* Extended NEC */ - scancode = address << 16 | - not_address << 8 | - command; - IR_dprintk(1, "NEC (Ext) scancode 0x%06x\n", scancode); - rc_type = RC_TYPE_NECX; - } else { - /* Normal NEC */ - scancode = address << 8 | command; - IR_dprintk(1, "NEC scancode 0x%04x\n", scancode); - rc_type = RC_TYPE_NEC; - } + scancode = ir_nec_bytes_to_scancode(address, not_address, + command, not_command, + &rc_type); if (data->is_nec_x) data->necx_repeat = true; diff --git a/include/media/rc-core.h b/include/media/rc-core.h index 78dea39a9b39..204f7785b8e7 100644 --- a/include/media/rc-core.h +++ b/include/media/rc-core.h @@ -340,4 +340,35 @@ static inline u32 ir_extract_bits(u32 data, u32 mask) return value; } +/* Get NEC scancode and protocol type from address and command bytes */ +static inline u32 ir_nec_bytes_to_scancode(u8 address, u8 not_address, + u8 command, u8 not_command, + enum rc_type *protocol) +{ + u32 scancode; + + if ((command ^ not_command) != 0xff) { + /* NEC transport, but modified protocol, used by at + * least Apple and TiVo remotes + */ + scancode = not_address << 24 | + address << 16 | + not_command << 8 | + command; + *protocol = RC_TYPE_NEC32; + } else if ((address ^ not_address) != 0xff) { + /* Extended NEC */ + scancode = address << 16 | + not_address << 8 | + command; + *protocol = RC_TYPE_NECX; + } else { + /* Normal NEC */ + scancode = address << 8 | command; + *protocol = RC_TYPE_NEC; + } + + return scancode; +} + #endif /* _RC_CORE */ -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 1/3] rc: ir-nec-decoder: move scancode composing code into a shared function @ 2017-07-30 13:23 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-07-30 13:23 UTC (permalink / raw) To: linux-arm-kernel From: Shawn Guo <shawn.guo@linaro.org> The NEC scancode composing and protocol type detection in ir_nec_decode() is generic enough to be a shared function. Let's create an inline function in rc-core.h, so that other remote control drivers can reuse this function to save some code. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> --- drivers/media/rc/ir-nec-decoder.c | 32 +++----------------------------- include/media/rc-core.h | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/drivers/media/rc/ir-nec-decoder.c b/drivers/media/rc/ir-nec-decoder.c index 3ce850314dca..b578c1e27c04 100644 --- a/drivers/media/rc/ir-nec-decoder.c +++ b/drivers/media/rc/ir-nec-decoder.c @@ -51,7 +51,6 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev) u32 scancode; enum rc_type rc_type; u8 address, not_address, command, not_command; - bool send_32bits = false; if (!is_timing_event(ev)) { if (ev.reset) @@ -161,34 +160,9 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev) command = bitrev8((data->bits >> 8) & 0xff); not_command = bitrev8((data->bits >> 0) & 0xff); - if ((command ^ not_command) != 0xff) { - IR_dprintk(1, "NEC checksum error: received 0x%08x\n", - data->bits); - send_32bits = true; - } - - if (send_32bits) { - /* NEC transport, but modified protocol, used by at - * least Apple and TiVo remotes */ - scancode = not_address << 24 | - address << 16 | - not_command << 8 | - command; - IR_dprintk(1, "NEC (modified) scancode 0x%08x\n", scancode); - rc_type = RC_TYPE_NEC32; - } else if ((address ^ not_address) != 0xff) { - /* Extended NEC */ - scancode = address << 16 | - not_address << 8 | - command; - IR_dprintk(1, "NEC (Ext) scancode 0x%06x\n", scancode); - rc_type = RC_TYPE_NECX; - } else { - /* Normal NEC */ - scancode = address << 8 | command; - IR_dprintk(1, "NEC scancode 0x%04x\n", scancode); - rc_type = RC_TYPE_NEC; - } + scancode = ir_nec_bytes_to_scancode(address, not_address, + command, not_command, + &rc_type); if (data->is_nec_x) data->necx_repeat = true; diff --git a/include/media/rc-core.h b/include/media/rc-core.h index 78dea39a9b39..204f7785b8e7 100644 --- a/include/media/rc-core.h +++ b/include/media/rc-core.h @@ -340,4 +340,35 @@ static inline u32 ir_extract_bits(u32 data, u32 mask) return value; } +/* Get NEC scancode and protocol type from address and command bytes */ +static inline u32 ir_nec_bytes_to_scancode(u8 address, u8 not_address, + u8 command, u8 not_command, + enum rc_type *protocol) +{ + u32 scancode; + + if ((command ^ not_command) != 0xff) { + /* NEC transport, but modified protocol, used by at + * least Apple and TiVo remotes + */ + scancode = not_address << 24 | + address << 16 | + not_command << 8 | + command; + *protocol = RC_TYPE_NEC32; + } else if ((address ^ not_address) != 0xff) { + /* Extended NEC */ + scancode = address << 16 | + not_address << 8 | + command; + *protocol = RC_TYPE_NECX; + } else { + /* Normal NEC */ + scancode = address << 8 | command; + *protocol = RC_TYPE_NEC; + } + + return scancode; +} + #endif /* _RC_CORE */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 1/3] rc: ir-nec-decoder: move scancode composing code into a shared function @ 2017-07-30 13:23 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-07-30 13:23 UTC (permalink / raw) To: Sean Young, Rob Herring Cc: Baoyou Xie, Xin Zhou, Jun Nie, linux-media, devicetree, linux-arm-kernel, Shawn Guo From: Shawn Guo <shawn.guo@linaro.org> The NEC scancode composing and protocol type detection in ir_nec_decode() is generic enough to be a shared function. Let's create an inline function in rc-core.h, so that other remote control drivers can reuse this function to save some code. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> --- drivers/media/rc/ir-nec-decoder.c | 32 +++----------------------------- include/media/rc-core.h | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/drivers/media/rc/ir-nec-decoder.c b/drivers/media/rc/ir-nec-decoder.c index 3ce850314dca..b578c1e27c04 100644 --- a/drivers/media/rc/ir-nec-decoder.c +++ b/drivers/media/rc/ir-nec-decoder.c @@ -51,7 +51,6 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev) u32 scancode; enum rc_type rc_type; u8 address, not_address, command, not_command; - bool send_32bits = false; if (!is_timing_event(ev)) { if (ev.reset) @@ -161,34 +160,9 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev) command = bitrev8((data->bits >> 8) & 0xff); not_command = bitrev8((data->bits >> 0) & 0xff); - if ((command ^ not_command) != 0xff) { - IR_dprintk(1, "NEC checksum error: received 0x%08x\n", - data->bits); - send_32bits = true; - } - - if (send_32bits) { - /* NEC transport, but modified protocol, used by at - * least Apple and TiVo remotes */ - scancode = not_address << 24 | - address << 16 | - not_command << 8 | - command; - IR_dprintk(1, "NEC (modified) scancode 0x%08x\n", scancode); - rc_type = RC_TYPE_NEC32; - } else if ((address ^ not_address) != 0xff) { - /* Extended NEC */ - scancode = address << 16 | - not_address << 8 | - command; - IR_dprintk(1, "NEC (Ext) scancode 0x%06x\n", scancode); - rc_type = RC_TYPE_NECX; - } else { - /* Normal NEC */ - scancode = address << 8 | command; - IR_dprintk(1, "NEC scancode 0x%04x\n", scancode); - rc_type = RC_TYPE_NEC; - } + scancode = ir_nec_bytes_to_scancode(address, not_address, + command, not_command, + &rc_type); if (data->is_nec_x) data->necx_repeat = true; diff --git a/include/media/rc-core.h b/include/media/rc-core.h index 78dea39a9b39..204f7785b8e7 100644 --- a/include/media/rc-core.h +++ b/include/media/rc-core.h @@ -340,4 +340,35 @@ static inline u32 ir_extract_bits(u32 data, u32 mask) return value; } +/* Get NEC scancode and protocol type from address and command bytes */ +static inline u32 ir_nec_bytes_to_scancode(u8 address, u8 not_address, + u8 command, u8 not_command, + enum rc_type *protocol) +{ + u32 scancode; + + if ((command ^ not_command) != 0xff) { + /* NEC transport, but modified protocol, used by at + * least Apple and TiVo remotes + */ + scancode = not_address << 24 | + address << 16 | + not_command << 8 | + command; + *protocol = RC_TYPE_NEC32; + } else if ((address ^ not_address) != 0xff) { + /* Extended NEC */ + scancode = address << 16 | + not_address << 8 | + command; + *protocol = RC_TYPE_NECX; + } else { + /* Normal NEC */ + scancode = address << 8 | command; + *protocol = RC_TYPE_NEC; + } + + return scancode; +} + #endif /* _RC_CORE */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 2/3] dt-bindings: add bindings document for zx-irdec 2017-07-30 13:23 ` Shawn Guo (?) @ 2017-07-30 13:23 ` Shawn Guo -1 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-07-30 13:23 UTC (permalink / raw) To: Sean Young, Rob Herring Cc: Baoyou Xie, Xin Zhou, Jun Nie, linux-media-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Shawn Guo From: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> It adds the dt-bindings document for ZTE ZX IRDEC remote control block. Signed-off-by: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> --- Documentation/devicetree/bindings/media/zx-irdec.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/zx-irdec.txt diff --git a/Documentation/devicetree/bindings/media/zx-irdec.txt b/Documentation/devicetree/bindings/media/zx-irdec.txt new file mode 100644 index 000000000000..295b9fab593e --- /dev/null +++ b/Documentation/devicetree/bindings/media/zx-irdec.txt @@ -0,0 +1,14 @@ +IR Decoder (IRDEC) on ZTE ZX family SoCs + +Required properties: + - compatible: Should be "zte,zx296718-irdec". + - reg: Physical base address and length of IRDEC registers. + - interrupts: Interrupt number of IRDEC. + +Exmaples: + + irdec: ir-decoder@111000 { + compatible = "zte,zx296718-irdec"; + reg = <0x111000 0x1000>; + interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; + }; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 2/3] dt-bindings: add bindings document for zx-irdec @ 2017-07-30 13:23 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-07-30 13:23 UTC (permalink / raw) To: linux-arm-kernel From: Shawn Guo <shawn.guo@linaro.org> It adds the dt-bindings document for ZTE ZX IRDEC remote control block. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> --- Documentation/devicetree/bindings/media/zx-irdec.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/zx-irdec.txt diff --git a/Documentation/devicetree/bindings/media/zx-irdec.txt b/Documentation/devicetree/bindings/media/zx-irdec.txt new file mode 100644 index 000000000000..295b9fab593e --- /dev/null +++ b/Documentation/devicetree/bindings/media/zx-irdec.txt @@ -0,0 +1,14 @@ +IR Decoder (IRDEC) on ZTE ZX family SoCs + +Required properties: + - compatible: Should be "zte,zx296718-irdec". + - reg: Physical base address and length of IRDEC registers. + - interrupts: Interrupt number of IRDEC. + +Exmaples: + + irdec: ir-decoder at 111000 { + compatible = "zte,zx296718-irdec"; + reg = <0x111000 0x1000>; + interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; + }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 2/3] dt-bindings: add bindings document for zx-irdec @ 2017-07-30 13:23 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-07-30 13:23 UTC (permalink / raw) To: Sean Young, Rob Herring Cc: Baoyou Xie, Xin Zhou, Jun Nie, linux-media, devicetree, linux-arm-kernel, Shawn Guo From: Shawn Guo <shawn.guo@linaro.org> It adds the dt-bindings document for ZTE ZX IRDEC remote control block. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> --- Documentation/devicetree/bindings/media/zx-irdec.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/zx-irdec.txt diff --git a/Documentation/devicetree/bindings/media/zx-irdec.txt b/Documentation/devicetree/bindings/media/zx-irdec.txt new file mode 100644 index 000000000000..295b9fab593e --- /dev/null +++ b/Documentation/devicetree/bindings/media/zx-irdec.txt @@ -0,0 +1,14 @@ +IR Decoder (IRDEC) on ZTE ZX family SoCs + +Required properties: + - compatible: Should be "zte,zx296718-irdec". + - reg: Physical base address and length of IRDEC registers. + - interrupts: Interrupt number of IRDEC. + +Exmaples: + + irdec: ir-decoder@111000 { + compatible = "zte,zx296718-irdec"; + reg = <0x111000 0x1000>; + interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; + }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
* Re: [PATCH v2 2/3] dt-bindings: add bindings document for zx-irdec 2017-07-30 13:23 ` Shawn Guo @ 2017-08-03 23:36 ` Rob Herring -1 siblings, 0 replies; 27+ messages in thread From: Rob Herring @ 2017-08-03 23:36 UTC (permalink / raw) To: Shawn Guo Cc: Sean Young, Baoyou Xie, Xin Zhou, Jun Nie, linux-media, devicetree, linux-arm-kernel, Shawn Guo On Sun, Jul 30, 2017 at 09:23:12PM +0800, Shawn Guo wrote: > From: Shawn Guo <shawn.guo@linaro.org> > > It adds the dt-bindings document for ZTE ZX IRDEC remote control > block. > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org> > --- > Documentation/devicetree/bindings/media/zx-irdec.txt | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > create mode 100644 Documentation/devicetree/bindings/media/zx-irdec.txt Acked-by: Rob Herring <robh@kernel.org> ^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 2/3] dt-bindings: add bindings document for zx-irdec @ 2017-08-03 23:36 ` Rob Herring 0 siblings, 0 replies; 27+ messages in thread From: Rob Herring @ 2017-08-03 23:36 UTC (permalink / raw) To: linux-arm-kernel On Sun, Jul 30, 2017 at 09:23:12PM +0800, Shawn Guo wrote: > From: Shawn Guo <shawn.guo@linaro.org> > > It adds the dt-bindings document for ZTE ZX IRDEC remote control > block. > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org> > --- > Documentation/devicetree/bindings/media/zx-irdec.txt | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > create mode 100644 Documentation/devicetree/bindings/media/zx-irdec.txt Acked-by: Rob Herring <robh@kernel.org> ^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 3/3] rc: add zx-irdec remote control driver 2017-07-30 13:23 ` Shawn Guo (?) @ 2017-07-30 13:23 ` Shawn Guo -1 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-07-30 13:23 UTC (permalink / raw) To: Sean Young, Rob Herring Cc: Baoyou Xie, Xin Zhou, Jun Nie, linux-media-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Shawn Guo From: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> It adds the remote control driver and corresponding keymap file for IRDEC block found on ZTE ZX family SoCs. Signed-off-by: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> --- drivers/media/rc/Kconfig | 11 ++ drivers/media/rc/Makefile | 1 + drivers/media/rc/keymaps/Makefile | 3 +- drivers/media/rc/keymaps/rc-zx-irdec.c | 79 ++++++++++++++ drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++++++++++++++ include/media/rc-map.h | 1 + 6 files changed, 277 insertions(+), 1 deletion(-) create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c create mode 100644 drivers/media/rc/zx-irdec.c diff --git a/drivers/media/rc/Kconfig b/drivers/media/rc/Kconfig index 5e83b76495f7..c572d5da4b5f 100644 --- a/drivers/media/rc/Kconfig +++ b/drivers/media/rc/Kconfig @@ -435,4 +435,15 @@ config IR_SIR To compile this driver as a module, choose M here: the module will be called sir-ir. +config IR_ZX + tristate "ZTE ZX IR remote control" + depends on RC_CORE + depends on ARCH_ZX || COMPILE_TEST + ---help--- + Say Y if you want to use the IR remote control available + on ZTE ZX family SoCs. + + To compile this driver as a module, choose M here: the + module will be called zx-irdec. + endif #RC_DEVICES diff --git a/drivers/media/rc/Makefile b/drivers/media/rc/Makefile index 245e2c2d0b22..922c1a5620e9 100644 --- a/drivers/media/rc/Makefile +++ b/drivers/media/rc/Makefile @@ -41,3 +41,4 @@ obj-$(CONFIG_IR_IMG) += img-ir/ obj-$(CONFIG_IR_SERIAL) += serial_ir.o obj-$(CONFIG_IR_SIR) += sir_ir.o obj-$(CONFIG_IR_MTK) += mtk-cir.o +obj-$(CONFIG_IR_ZX) += zx-irdec.o diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile index 2945f99907b5..af6496d709fb 100644 --- a/drivers/media/rc/keymaps/Makefile +++ b/drivers/media/rc/keymaps/Makefile @@ -109,4 +109,5 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \ rc-videomate-tv-pvr.o \ rc-winfast.o \ rc-winfast-usbii-deluxe.o \ - rc-su3000.o + rc-su3000.o \ + rc-zx-irdec.o diff --git a/drivers/media/rc/keymaps/rc-zx-irdec.c b/drivers/media/rc/keymaps/rc-zx-irdec.c new file mode 100644 index 000000000000..cc889df47eb8 --- /dev/null +++ b/drivers/media/rc/keymaps/rc-zx-irdec.c @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2017 Sanechips Technology Co., Ltd. + * Copyright 2017 Linaro Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <linux/module.h> +#include <media/rc-map.h> + +static struct rc_map_table zx_irdec_table[] = { + { 0x01, KEY_1 }, + { 0x02, KEY_2 }, + { 0x03, KEY_3 }, + { 0x04, KEY_4 }, + { 0x05, KEY_5 }, + { 0x06, KEY_6 }, + { 0x07, KEY_7 }, + { 0x08, KEY_8 }, + { 0x09, KEY_9 }, + { 0x31, KEY_0 }, + { 0x16, KEY_DELETE }, + { 0x0a, KEY_MODE }, /* Input method */ + { 0x0c, KEY_VOLUMEUP }, + { 0x18, KEY_VOLUMEDOWN }, + { 0x0b, KEY_CHANNELUP }, + { 0x15, KEY_CHANNELDOWN }, + { 0x0d, KEY_PAGEUP }, + { 0x13, KEY_PAGEDOWN }, + { 0x46, KEY_FASTFORWARD }, + { 0x43, KEY_REWIND }, + { 0x44, KEY_PLAYPAUSE }, + { 0x45, KEY_STOP }, + { 0x49, KEY_OK }, + { 0x47, KEY_UP }, + { 0x4b, KEY_DOWN }, + { 0x48, KEY_LEFT }, + { 0x4a, KEY_RIGHT }, + { 0x4d, KEY_MENU }, + { 0x56, KEY_APPSELECT }, /* Application */ + { 0x4c, KEY_BACK }, + { 0x1e, KEY_INFO }, + { 0x4e, KEY_F1 }, + { 0x4f, KEY_F2 }, + { 0x50, KEY_F3 }, + { 0x51, KEY_F4 }, + { 0x1c, KEY_AUDIO }, + { 0x12, KEY_MUTE }, + { 0x11, KEY_DOT }, /* Location */ + { 0x1d, KEY_SETUP }, + { 0x40, KEY_POWER }, +}; + +static struct rc_map_list zx_irdec_map = { + .map = { + .scan = zx_irdec_table, + .size = ARRAY_SIZE(zx_irdec_table), + .rc_type = RC_TYPE_NEC, + .name = RC_MAP_ZX_IRDEC, + } +}; + +static int __init init_rc_map_zx_irdec(void) +{ + return rc_map_register(&zx_irdec_map); +} + +static void __exit exit_rc_map_zx_irdec(void) +{ + rc_map_unregister(&zx_irdec_map); +} + +module_init(init_rc_map_zx_irdec) +module_exit(exit_rc_map_zx_irdec) + +MODULE_AUTHOR("Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/rc/zx-irdec.c b/drivers/media/rc/zx-irdec.c new file mode 100644 index 000000000000..3993aa0aeaa9 --- /dev/null +++ b/drivers/media/rc/zx-irdec.c @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2017 Sanechips Technology Co., Ltd. + * Copyright 2017 Linaro Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <linux/device.h> +#include <linux/err.h> +#include <linux/interrupt.h> +#include <linux/io.h> +#include <linux/module.h> +#include <linux/of_platform.h> +#include <linux/platform_device.h> + +#include <media/rc-core.h> + +#define DRIVER_NAME "zx-irdec" + +#define ZX_IR_ENABLE 0x04 +#define ZX_IREN BIT(0) +#define ZX_IR_CTRL 0x08 +#define ZX_DEGL_MASK GENMASK(21, 20) +#define ZX_DEGL_VALUE(x) (((x) << 20) & ZX_DEGL_MASK) +#define ZX_WDBEGIN_MASK GENMASK(18, 8) +#define ZX_WDBEGIN_VALUE(x) (((x) << 8) & ZX_WDBEGIN_MASK) +#define ZX_IR_INTEN 0x10 +#define ZX_IR_INTSTCLR 0x14 +#define ZX_IR_CODE 0x30 +#define ZX_IR_CNUM 0x34 +#define ZX_NECRPT BIT(16) + +struct zx_irdec { + void __iomem *base; + struct rc_dev *rcd; +}; + +static void zx_irdec_set_mask(struct zx_irdec *irdec, unsigned int reg, + u32 mask, u32 value) +{ + u32 data; + + data = readl(irdec->base + reg); + data &= ~mask; + data |= value & mask; + writel(data, irdec->base + reg); +} + +static irqreturn_t zx_irdec_irq(int irq, void *dev_id) +{ + struct zx_irdec *irdec = dev_id; + u8 address, not_address; + u8 command, not_command; + u32 rawcode, scancode; + enum rc_type rc_type; + + /* Clear interrupt */ + writel(1, irdec->base + ZX_IR_INTSTCLR); + + /* Check repeat frame */ + if (readl(irdec->base + ZX_IR_CNUM) & ZX_NECRPT) { + rc_repeat(irdec->rcd); + goto done; + } + + rawcode = readl(irdec->base + ZX_IR_CODE); + not_command = (rawcode >> 24) & 0xff; + command = (rawcode >> 16) & 0xff; + not_address = (rawcode >> 8) & 0xff; + address = rawcode & 0xff; + + scancode = ir_nec_bytes_to_scancode(address, not_address, + command, not_command, + &rc_type); + rc_keydown(irdec->rcd, rc_type, scancode, 0); + +done: + return IRQ_HANDLED; +} + +static int zx_irdec_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct zx_irdec *irdec; + struct resource *res; + struct rc_dev *rcd; + int irq; + int ret; + + irdec = devm_kzalloc(dev, sizeof(*irdec), GFP_KERNEL); + if (!irdec) + return -ENOMEM; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + irdec->base = devm_ioremap_resource(dev, res); + if (IS_ERR(irdec->base)) + return PTR_ERR(irdec->base); + + irq = platform_get_irq(pdev, 0); + if (irq < 0) + return irq; + + rcd = devm_rc_allocate_device(dev, RC_DRIVER_SCANCODE); + if (!rcd) { + dev_err(dev, "failed to allocate rc device\n"); + return -ENOMEM; + } + + irdec->rcd = rcd; + + rcd->priv = irdec; + rcd->input_name = DRIVER_NAME; + rcd->input_phys = DRIVER_NAME "/input0"; + rcd->input_id.bustype = BUS_HOST; + rcd->map_name = RC_MAP_ZX_IRDEC; + rcd->allowed_protocols = RC_BIT_NEC | RC_BIT_NECX; + rcd->driver_name = DRIVER_NAME; + + platform_set_drvdata(pdev, irdec); + + ret = devm_rc_register_device(dev, rcd); + if (ret) { + dev_err(dev, "failed to register rc device\n"); + return ret; + } + + ret = devm_request_irq(dev, irq, zx_irdec_irq, 0, NULL, irdec); + if (ret) { + dev_err(dev, "failed to request irq\n"); + return ret; + } + + /* + * Initialize deglitch level and watchdog counter beginner as + * recommended by vendor BSP code. + */ + zx_irdec_set_mask(irdec, ZX_IR_CTRL, ZX_DEGL_MASK, ZX_DEGL_VALUE(0)); + zx_irdec_set_mask(irdec, ZX_IR_CTRL, ZX_WDBEGIN_MASK, + ZX_WDBEGIN_VALUE(0x21c)); + + /* Enable interrupt */ + writel(1, irdec->base + ZX_IR_INTEN); + + /* Enable the decoder */ + zx_irdec_set_mask(irdec, ZX_IR_ENABLE, ZX_IREN, ZX_IREN); + + return 0; +} + +static int zx_irdec_remove(struct platform_device *pdev) +{ + struct zx_irdec *irdec = platform_get_drvdata(pdev); + + /* Disable the decoder */ + zx_irdec_set_mask(irdec, ZX_IR_ENABLE, ZX_IREN, 0); + + /* Disable interrupt */ + writel(0, irdec->base + ZX_IR_INTEN); + + return 0; +} + +static const struct of_device_id zx_irdec_match[] = { + { .compatible = "zte,zx296718-irdec" }, + { }, +}; +MODULE_DEVICE_TABLE(of, zx_irdec_match); + +static struct platform_driver zx_irdec_driver = { + .probe = zx_irdec_probe, + .remove = zx_irdec_remove, + .driver = { + .name = DRIVER_NAME, + .of_match_table = zx_irdec_match, + }, +}; +module_platform_driver(zx_irdec_driver); + +MODULE_DESCRIPTION("ZTE ZX IR remote control driver"); +MODULE_AUTHOR("Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>"); +MODULE_LICENSE("GPL v2"); diff --git a/include/media/rc-map.h b/include/media/rc-map.h index 1a815a572fa1..c69482852f29 100644 --- a/include/media/rc-map.h +++ b/include/media/rc-map.h @@ -313,6 +313,7 @@ struct rc_map_list { #define RC_MAP_WINFAST "rc-winfast" #define RC_MAP_WINFAST_USBII_DELUXE "rc-winfast-usbii-deluxe" #define RC_MAP_SU3000 "rc-su3000" +#define RC_MAP_ZX_IRDEC "rc-zx-irdec" /* * Please, do not just append newer Remote Controller names at the end. -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 3/3] rc: add zx-irdec remote control driver @ 2017-07-30 13:23 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-07-30 13:23 UTC (permalink / raw) To: linux-arm-kernel From: Shawn Guo <shawn.guo@linaro.org> It adds the remote control driver and corresponding keymap file for IRDEC block found on ZTE ZX family SoCs. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> --- drivers/media/rc/Kconfig | 11 ++ drivers/media/rc/Makefile | 1 + drivers/media/rc/keymaps/Makefile | 3 +- drivers/media/rc/keymaps/rc-zx-irdec.c | 79 ++++++++++++++ drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++++++++++++++ include/media/rc-map.h | 1 + 6 files changed, 277 insertions(+), 1 deletion(-) create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c create mode 100644 drivers/media/rc/zx-irdec.c diff --git a/drivers/media/rc/Kconfig b/drivers/media/rc/Kconfig index 5e83b76495f7..c572d5da4b5f 100644 --- a/drivers/media/rc/Kconfig +++ b/drivers/media/rc/Kconfig @@ -435,4 +435,15 @@ config IR_SIR To compile this driver as a module, choose M here: the module will be called sir-ir. +config IR_ZX + tristate "ZTE ZX IR remote control" + depends on RC_CORE + depends on ARCH_ZX || COMPILE_TEST + ---help--- + Say Y if you want to use the IR remote control available + on ZTE ZX family SoCs. + + To compile this driver as a module, choose M here: the + module will be called zx-irdec. + endif #RC_DEVICES diff --git a/drivers/media/rc/Makefile b/drivers/media/rc/Makefile index 245e2c2d0b22..922c1a5620e9 100644 --- a/drivers/media/rc/Makefile +++ b/drivers/media/rc/Makefile @@ -41,3 +41,4 @@ obj-$(CONFIG_IR_IMG) += img-ir/ obj-$(CONFIG_IR_SERIAL) += serial_ir.o obj-$(CONFIG_IR_SIR) += sir_ir.o obj-$(CONFIG_IR_MTK) += mtk-cir.o +obj-$(CONFIG_IR_ZX) += zx-irdec.o diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile index 2945f99907b5..af6496d709fb 100644 --- a/drivers/media/rc/keymaps/Makefile +++ b/drivers/media/rc/keymaps/Makefile @@ -109,4 +109,5 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \ rc-videomate-tv-pvr.o \ rc-winfast.o \ rc-winfast-usbii-deluxe.o \ - rc-su3000.o + rc-su3000.o \ + rc-zx-irdec.o diff --git a/drivers/media/rc/keymaps/rc-zx-irdec.c b/drivers/media/rc/keymaps/rc-zx-irdec.c new file mode 100644 index 000000000000..cc889df47eb8 --- /dev/null +++ b/drivers/media/rc/keymaps/rc-zx-irdec.c @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2017 Sanechips Technology Co., Ltd. + * Copyright 2017 Linaro Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <linux/module.h> +#include <media/rc-map.h> + +static struct rc_map_table zx_irdec_table[] = { + { 0x01, KEY_1 }, + { 0x02, KEY_2 }, + { 0x03, KEY_3 }, + { 0x04, KEY_4 }, + { 0x05, KEY_5 }, + { 0x06, KEY_6 }, + { 0x07, KEY_7 }, + { 0x08, KEY_8 }, + { 0x09, KEY_9 }, + { 0x31, KEY_0 }, + { 0x16, KEY_DELETE }, + { 0x0a, KEY_MODE }, /* Input method */ + { 0x0c, KEY_VOLUMEUP }, + { 0x18, KEY_VOLUMEDOWN }, + { 0x0b, KEY_CHANNELUP }, + { 0x15, KEY_CHANNELDOWN }, + { 0x0d, KEY_PAGEUP }, + { 0x13, KEY_PAGEDOWN }, + { 0x46, KEY_FASTFORWARD }, + { 0x43, KEY_REWIND }, + { 0x44, KEY_PLAYPAUSE }, + { 0x45, KEY_STOP }, + { 0x49, KEY_OK }, + { 0x47, KEY_UP }, + { 0x4b, KEY_DOWN }, + { 0x48, KEY_LEFT }, + { 0x4a, KEY_RIGHT }, + { 0x4d, KEY_MENU }, + { 0x56, KEY_APPSELECT }, /* Application */ + { 0x4c, KEY_BACK }, + { 0x1e, KEY_INFO }, + { 0x4e, KEY_F1 }, + { 0x4f, KEY_F2 }, + { 0x50, KEY_F3 }, + { 0x51, KEY_F4 }, + { 0x1c, KEY_AUDIO }, + { 0x12, KEY_MUTE }, + { 0x11, KEY_DOT }, /* Location */ + { 0x1d, KEY_SETUP }, + { 0x40, KEY_POWER }, +}; + +static struct rc_map_list zx_irdec_map = { + .map = { + .scan = zx_irdec_table, + .size = ARRAY_SIZE(zx_irdec_table), + .rc_type = RC_TYPE_NEC, + .name = RC_MAP_ZX_IRDEC, + } +}; + +static int __init init_rc_map_zx_irdec(void) +{ + return rc_map_register(&zx_irdec_map); +} + +static void __exit exit_rc_map_zx_irdec(void) +{ + rc_map_unregister(&zx_irdec_map); +} + +module_init(init_rc_map_zx_irdec) +module_exit(exit_rc_map_zx_irdec) + +MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/rc/zx-irdec.c b/drivers/media/rc/zx-irdec.c new file mode 100644 index 000000000000..3993aa0aeaa9 --- /dev/null +++ b/drivers/media/rc/zx-irdec.c @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2017 Sanechips Technology Co., Ltd. + * Copyright 2017 Linaro Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <linux/device.h> +#include <linux/err.h> +#include <linux/interrupt.h> +#include <linux/io.h> +#include <linux/module.h> +#include <linux/of_platform.h> +#include <linux/platform_device.h> + +#include <media/rc-core.h> + +#define DRIVER_NAME "zx-irdec" + +#define ZX_IR_ENABLE 0x04 +#define ZX_IREN BIT(0) +#define ZX_IR_CTRL 0x08 +#define ZX_DEGL_MASK GENMASK(21, 20) +#define ZX_DEGL_VALUE(x) (((x) << 20) & ZX_DEGL_MASK) +#define ZX_WDBEGIN_MASK GENMASK(18, 8) +#define ZX_WDBEGIN_VALUE(x) (((x) << 8) & ZX_WDBEGIN_MASK) +#define ZX_IR_INTEN 0x10 +#define ZX_IR_INTSTCLR 0x14 +#define ZX_IR_CODE 0x30 +#define ZX_IR_CNUM 0x34 +#define ZX_NECRPT BIT(16) + +struct zx_irdec { + void __iomem *base; + struct rc_dev *rcd; +}; + +static void zx_irdec_set_mask(struct zx_irdec *irdec, unsigned int reg, + u32 mask, u32 value) +{ + u32 data; + + data = readl(irdec->base + reg); + data &= ~mask; + data |= value & mask; + writel(data, irdec->base + reg); +} + +static irqreturn_t zx_irdec_irq(int irq, void *dev_id) +{ + struct zx_irdec *irdec = dev_id; + u8 address, not_address; + u8 command, not_command; + u32 rawcode, scancode; + enum rc_type rc_type; + + /* Clear interrupt */ + writel(1, irdec->base + ZX_IR_INTSTCLR); + + /* Check repeat frame */ + if (readl(irdec->base + ZX_IR_CNUM) & ZX_NECRPT) { + rc_repeat(irdec->rcd); + goto done; + } + + rawcode = readl(irdec->base + ZX_IR_CODE); + not_command = (rawcode >> 24) & 0xff; + command = (rawcode >> 16) & 0xff; + not_address = (rawcode >> 8) & 0xff; + address = rawcode & 0xff; + + scancode = ir_nec_bytes_to_scancode(address, not_address, + command, not_command, + &rc_type); + rc_keydown(irdec->rcd, rc_type, scancode, 0); + +done: + return IRQ_HANDLED; +} + +static int zx_irdec_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct zx_irdec *irdec; + struct resource *res; + struct rc_dev *rcd; + int irq; + int ret; + + irdec = devm_kzalloc(dev, sizeof(*irdec), GFP_KERNEL); + if (!irdec) + return -ENOMEM; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + irdec->base = devm_ioremap_resource(dev, res); + if (IS_ERR(irdec->base)) + return PTR_ERR(irdec->base); + + irq = platform_get_irq(pdev, 0); + if (irq < 0) + return irq; + + rcd = devm_rc_allocate_device(dev, RC_DRIVER_SCANCODE); + if (!rcd) { + dev_err(dev, "failed to allocate rc device\n"); + return -ENOMEM; + } + + irdec->rcd = rcd; + + rcd->priv = irdec; + rcd->input_name = DRIVER_NAME; + rcd->input_phys = DRIVER_NAME "/input0"; + rcd->input_id.bustype = BUS_HOST; + rcd->map_name = RC_MAP_ZX_IRDEC; + rcd->allowed_protocols = RC_BIT_NEC | RC_BIT_NECX; + rcd->driver_name = DRIVER_NAME; + + platform_set_drvdata(pdev, irdec); + + ret = devm_rc_register_device(dev, rcd); + if (ret) { + dev_err(dev, "failed to register rc device\n"); + return ret; + } + + ret = devm_request_irq(dev, irq, zx_irdec_irq, 0, NULL, irdec); + if (ret) { + dev_err(dev, "failed to request irq\n"); + return ret; + } + + /* + * Initialize deglitch level and watchdog counter beginner as + * recommended by vendor BSP code. + */ + zx_irdec_set_mask(irdec, ZX_IR_CTRL, ZX_DEGL_MASK, ZX_DEGL_VALUE(0)); + zx_irdec_set_mask(irdec, ZX_IR_CTRL, ZX_WDBEGIN_MASK, + ZX_WDBEGIN_VALUE(0x21c)); + + /* Enable interrupt */ + writel(1, irdec->base + ZX_IR_INTEN); + + /* Enable the decoder */ + zx_irdec_set_mask(irdec, ZX_IR_ENABLE, ZX_IREN, ZX_IREN); + + return 0; +} + +static int zx_irdec_remove(struct platform_device *pdev) +{ + struct zx_irdec *irdec = platform_get_drvdata(pdev); + + /* Disable the decoder */ + zx_irdec_set_mask(irdec, ZX_IR_ENABLE, ZX_IREN, 0); + + /* Disable interrupt */ + writel(0, irdec->base + ZX_IR_INTEN); + + return 0; +} + +static const struct of_device_id zx_irdec_match[] = { + { .compatible = "zte,zx296718-irdec" }, + { }, +}; +MODULE_DEVICE_TABLE(of, zx_irdec_match); + +static struct platform_driver zx_irdec_driver = { + .probe = zx_irdec_probe, + .remove = zx_irdec_remove, + .driver = { + .name = DRIVER_NAME, + .of_match_table = zx_irdec_match, + }, +}; +module_platform_driver(zx_irdec_driver); + +MODULE_DESCRIPTION("ZTE ZX IR remote control driver"); +MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>"); +MODULE_LICENSE("GPL v2"); diff --git a/include/media/rc-map.h b/include/media/rc-map.h index 1a815a572fa1..c69482852f29 100644 --- a/include/media/rc-map.h +++ b/include/media/rc-map.h @@ -313,6 +313,7 @@ struct rc_map_list { #define RC_MAP_WINFAST "rc-winfast" #define RC_MAP_WINFAST_USBII_DELUXE "rc-winfast-usbii-deluxe" #define RC_MAP_SU3000 "rc-su3000" +#define RC_MAP_ZX_IRDEC "rc-zx-irdec" /* * Please, do not just append newer Remote Controller names at the end. -- 1.9.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 3/3] rc: add zx-irdec remote control driver @ 2017-07-30 13:23 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-07-30 13:23 UTC (permalink / raw) To: Sean Young, Rob Herring Cc: Baoyou Xie, Xin Zhou, Jun Nie, linux-media, devicetree, linux-arm-kernel, Shawn Guo From: Shawn Guo <shawn.guo@linaro.org> It adds the remote control driver and corresponding keymap file for IRDEC block found on ZTE ZX family SoCs. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> --- drivers/media/rc/Kconfig | 11 ++ drivers/media/rc/Makefile | 1 + drivers/media/rc/keymaps/Makefile | 3 +- drivers/media/rc/keymaps/rc-zx-irdec.c | 79 ++++++++++++++ drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++++++++++++++ include/media/rc-map.h | 1 + 6 files changed, 277 insertions(+), 1 deletion(-) create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c create mode 100644 drivers/media/rc/zx-irdec.c diff --git a/drivers/media/rc/Kconfig b/drivers/media/rc/Kconfig index 5e83b76495f7..c572d5da4b5f 100644 --- a/drivers/media/rc/Kconfig +++ b/drivers/media/rc/Kconfig @@ -435,4 +435,15 @@ config IR_SIR To compile this driver as a module, choose M here: the module will be called sir-ir. +config IR_ZX + tristate "ZTE ZX IR remote control" + depends on RC_CORE + depends on ARCH_ZX || COMPILE_TEST + ---help--- + Say Y if you want to use the IR remote control available + on ZTE ZX family SoCs. + + To compile this driver as a module, choose M here: the + module will be called zx-irdec. + endif #RC_DEVICES diff --git a/drivers/media/rc/Makefile b/drivers/media/rc/Makefile index 245e2c2d0b22..922c1a5620e9 100644 --- a/drivers/media/rc/Makefile +++ b/drivers/media/rc/Makefile @@ -41,3 +41,4 @@ obj-$(CONFIG_IR_IMG) += img-ir/ obj-$(CONFIG_IR_SERIAL) += serial_ir.o obj-$(CONFIG_IR_SIR) += sir_ir.o obj-$(CONFIG_IR_MTK) += mtk-cir.o +obj-$(CONFIG_IR_ZX) += zx-irdec.o diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile index 2945f99907b5..af6496d709fb 100644 --- a/drivers/media/rc/keymaps/Makefile +++ b/drivers/media/rc/keymaps/Makefile @@ -109,4 +109,5 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \ rc-videomate-tv-pvr.o \ rc-winfast.o \ rc-winfast-usbii-deluxe.o \ - rc-su3000.o + rc-su3000.o \ + rc-zx-irdec.o diff --git a/drivers/media/rc/keymaps/rc-zx-irdec.c b/drivers/media/rc/keymaps/rc-zx-irdec.c new file mode 100644 index 000000000000..cc889df47eb8 --- /dev/null +++ b/drivers/media/rc/keymaps/rc-zx-irdec.c @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2017 Sanechips Technology Co., Ltd. + * Copyright 2017 Linaro Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <linux/module.h> +#include <media/rc-map.h> + +static struct rc_map_table zx_irdec_table[] = { + { 0x01, KEY_1 }, + { 0x02, KEY_2 }, + { 0x03, KEY_3 }, + { 0x04, KEY_4 }, + { 0x05, KEY_5 }, + { 0x06, KEY_6 }, + { 0x07, KEY_7 }, + { 0x08, KEY_8 }, + { 0x09, KEY_9 }, + { 0x31, KEY_0 }, + { 0x16, KEY_DELETE }, + { 0x0a, KEY_MODE }, /* Input method */ + { 0x0c, KEY_VOLUMEUP }, + { 0x18, KEY_VOLUMEDOWN }, + { 0x0b, KEY_CHANNELUP }, + { 0x15, KEY_CHANNELDOWN }, + { 0x0d, KEY_PAGEUP }, + { 0x13, KEY_PAGEDOWN }, + { 0x46, KEY_FASTFORWARD }, + { 0x43, KEY_REWIND }, + { 0x44, KEY_PLAYPAUSE }, + { 0x45, KEY_STOP }, + { 0x49, KEY_OK }, + { 0x47, KEY_UP }, + { 0x4b, KEY_DOWN }, + { 0x48, KEY_LEFT }, + { 0x4a, KEY_RIGHT }, + { 0x4d, KEY_MENU }, + { 0x56, KEY_APPSELECT }, /* Application */ + { 0x4c, KEY_BACK }, + { 0x1e, KEY_INFO }, + { 0x4e, KEY_F1 }, + { 0x4f, KEY_F2 }, + { 0x50, KEY_F3 }, + { 0x51, KEY_F4 }, + { 0x1c, KEY_AUDIO }, + { 0x12, KEY_MUTE }, + { 0x11, KEY_DOT }, /* Location */ + { 0x1d, KEY_SETUP }, + { 0x40, KEY_POWER }, +}; + +static struct rc_map_list zx_irdec_map = { + .map = { + .scan = zx_irdec_table, + .size = ARRAY_SIZE(zx_irdec_table), + .rc_type = RC_TYPE_NEC, + .name = RC_MAP_ZX_IRDEC, + } +}; + +static int __init init_rc_map_zx_irdec(void) +{ + return rc_map_register(&zx_irdec_map); +} + +static void __exit exit_rc_map_zx_irdec(void) +{ + rc_map_unregister(&zx_irdec_map); +} + +module_init(init_rc_map_zx_irdec) +module_exit(exit_rc_map_zx_irdec) + +MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/rc/zx-irdec.c b/drivers/media/rc/zx-irdec.c new file mode 100644 index 000000000000..3993aa0aeaa9 --- /dev/null +++ b/drivers/media/rc/zx-irdec.c @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2017 Sanechips Technology Co., Ltd. + * Copyright 2017 Linaro Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <linux/device.h> +#include <linux/err.h> +#include <linux/interrupt.h> +#include <linux/io.h> +#include <linux/module.h> +#include <linux/of_platform.h> +#include <linux/platform_device.h> + +#include <media/rc-core.h> + +#define DRIVER_NAME "zx-irdec" + +#define ZX_IR_ENABLE 0x04 +#define ZX_IREN BIT(0) +#define ZX_IR_CTRL 0x08 +#define ZX_DEGL_MASK GENMASK(21, 20) +#define ZX_DEGL_VALUE(x) (((x) << 20) & ZX_DEGL_MASK) +#define ZX_WDBEGIN_MASK GENMASK(18, 8) +#define ZX_WDBEGIN_VALUE(x) (((x) << 8) & ZX_WDBEGIN_MASK) +#define ZX_IR_INTEN 0x10 +#define ZX_IR_INTSTCLR 0x14 +#define ZX_IR_CODE 0x30 +#define ZX_IR_CNUM 0x34 +#define ZX_NECRPT BIT(16) + +struct zx_irdec { + void __iomem *base; + struct rc_dev *rcd; +}; + +static void zx_irdec_set_mask(struct zx_irdec *irdec, unsigned int reg, + u32 mask, u32 value) +{ + u32 data; + + data = readl(irdec->base + reg); + data &= ~mask; + data |= value & mask; + writel(data, irdec->base + reg); +} + +static irqreturn_t zx_irdec_irq(int irq, void *dev_id) +{ + struct zx_irdec *irdec = dev_id; + u8 address, not_address; + u8 command, not_command; + u32 rawcode, scancode; + enum rc_type rc_type; + + /* Clear interrupt */ + writel(1, irdec->base + ZX_IR_INTSTCLR); + + /* Check repeat frame */ + if (readl(irdec->base + ZX_IR_CNUM) & ZX_NECRPT) { + rc_repeat(irdec->rcd); + goto done; + } + + rawcode = readl(irdec->base + ZX_IR_CODE); + not_command = (rawcode >> 24) & 0xff; + command = (rawcode >> 16) & 0xff; + not_address = (rawcode >> 8) & 0xff; + address = rawcode & 0xff; + + scancode = ir_nec_bytes_to_scancode(address, not_address, + command, not_command, + &rc_type); + rc_keydown(irdec->rcd, rc_type, scancode, 0); + +done: + return IRQ_HANDLED; +} + +static int zx_irdec_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct zx_irdec *irdec; + struct resource *res; + struct rc_dev *rcd; + int irq; + int ret; + + irdec = devm_kzalloc(dev, sizeof(*irdec), GFP_KERNEL); + if (!irdec) + return -ENOMEM; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + irdec->base = devm_ioremap_resource(dev, res); + if (IS_ERR(irdec->base)) + return PTR_ERR(irdec->base); + + irq = platform_get_irq(pdev, 0); + if (irq < 0) + return irq; + + rcd = devm_rc_allocate_device(dev, RC_DRIVER_SCANCODE); + if (!rcd) { + dev_err(dev, "failed to allocate rc device\n"); + return -ENOMEM; + } + + irdec->rcd = rcd; + + rcd->priv = irdec; + rcd->input_name = DRIVER_NAME; + rcd->input_phys = DRIVER_NAME "/input0"; + rcd->input_id.bustype = BUS_HOST; + rcd->map_name = RC_MAP_ZX_IRDEC; + rcd->allowed_protocols = RC_BIT_NEC | RC_BIT_NECX; + rcd->driver_name = DRIVER_NAME; + + platform_set_drvdata(pdev, irdec); + + ret = devm_rc_register_device(dev, rcd); + if (ret) { + dev_err(dev, "failed to register rc device\n"); + return ret; + } + + ret = devm_request_irq(dev, irq, zx_irdec_irq, 0, NULL, irdec); + if (ret) { + dev_err(dev, "failed to request irq\n"); + return ret; + } + + /* + * Initialize deglitch level and watchdog counter beginner as + * recommended by vendor BSP code. + */ + zx_irdec_set_mask(irdec, ZX_IR_CTRL, ZX_DEGL_MASK, ZX_DEGL_VALUE(0)); + zx_irdec_set_mask(irdec, ZX_IR_CTRL, ZX_WDBEGIN_MASK, + ZX_WDBEGIN_VALUE(0x21c)); + + /* Enable interrupt */ + writel(1, irdec->base + ZX_IR_INTEN); + + /* Enable the decoder */ + zx_irdec_set_mask(irdec, ZX_IR_ENABLE, ZX_IREN, ZX_IREN); + + return 0; +} + +static int zx_irdec_remove(struct platform_device *pdev) +{ + struct zx_irdec *irdec = platform_get_drvdata(pdev); + + /* Disable the decoder */ + zx_irdec_set_mask(irdec, ZX_IR_ENABLE, ZX_IREN, 0); + + /* Disable interrupt */ + writel(0, irdec->base + ZX_IR_INTEN); + + return 0; +} + +static const struct of_device_id zx_irdec_match[] = { + { .compatible = "zte,zx296718-irdec" }, + { }, +}; +MODULE_DEVICE_TABLE(of, zx_irdec_match); + +static struct platform_driver zx_irdec_driver = { + .probe = zx_irdec_probe, + .remove = zx_irdec_remove, + .driver = { + .name = DRIVER_NAME, + .of_match_table = zx_irdec_match, + }, +}; +module_platform_driver(zx_irdec_driver); + +MODULE_DESCRIPTION("ZTE ZX IR remote control driver"); +MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>"); +MODULE_LICENSE("GPL v2"); diff --git a/include/media/rc-map.h b/include/media/rc-map.h index 1a815a572fa1..c69482852f29 100644 --- a/include/media/rc-map.h +++ b/include/media/rc-map.h @@ -313,6 +313,7 @@ struct rc_map_list { #define RC_MAP_WINFAST "rc-winfast" #define RC_MAP_WINFAST_USBII_DELUXE "rc-winfast-usbii-deluxe" #define RC_MAP_SU3000 "rc-su3000" +#define RC_MAP_ZX_IRDEC "rc-zx-irdec" /* * Please, do not just append newer Remote Controller names at the end. -- 1.9.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
[parent not found: <1501420993-21977-4-git-send-email-shawnguo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>]
* Re: [PATCH v2 3/3] rc: add zx-irdec remote control driver 2017-07-30 13:23 ` Shawn Guo (?) @ 2017-08-09 13:00 ` Sean Young -1 siblings, 0 replies; 27+ messages in thread From: Sean Young @ 2017-08-09 13:00 UTC (permalink / raw) To: Shawn Guo Cc: Rob Herring, Baoyou Xie, Xin Zhou, Jun Nie, linux-media-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Shawn Guo On Sun, Jul 30, 2017 at 09:23:13PM +0800, Shawn Guo wrote: > From: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> > > It adds the remote control driver and corresponding keymap file for > IRDEC block found on ZTE ZX family SoCs. > > Signed-off-by: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> > --- > drivers/media/rc/Kconfig | 11 ++ > drivers/media/rc/Makefile | 1 + > drivers/media/rc/keymaps/Makefile | 3 +- > drivers/media/rc/keymaps/rc-zx-irdec.c | 79 ++++++++++++++ > drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++++++++++++++ > include/media/rc-map.h | 1 + > 6 files changed, 277 insertions(+), 1 deletion(-) > create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c > create mode 100644 drivers/media/rc/zx-irdec.c We're missing an MAINTAINERS entry for this driver. Could this be added please as a separate patch? Thanks Sean -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 3/3] rc: add zx-irdec remote control driver @ 2017-08-09 13:00 ` Sean Young 0 siblings, 0 replies; 27+ messages in thread From: Sean Young @ 2017-08-09 13:00 UTC (permalink / raw) To: linux-arm-kernel On Sun, Jul 30, 2017 at 09:23:13PM +0800, Shawn Guo wrote: > From: Shawn Guo <shawn.guo@linaro.org> > > It adds the remote control driver and corresponding keymap file for > IRDEC block found on ZTE ZX family SoCs. > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org> > --- > drivers/media/rc/Kconfig | 11 ++ > drivers/media/rc/Makefile | 1 + > drivers/media/rc/keymaps/Makefile | 3 +- > drivers/media/rc/keymaps/rc-zx-irdec.c | 79 ++++++++++++++ > drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++++++++++++++ > include/media/rc-map.h | 1 + > 6 files changed, 277 insertions(+), 1 deletion(-) > create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c > create mode 100644 drivers/media/rc/zx-irdec.c We're missing an MAINTAINERS entry for this driver. Could this be added please as a separate patch? Thanks Sean ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v2 3/3] rc: add zx-irdec remote control driver @ 2017-08-09 13:00 ` Sean Young 0 siblings, 0 replies; 27+ messages in thread From: Sean Young @ 2017-08-09 13:00 UTC (permalink / raw) To: Shawn Guo Cc: Rob Herring, Baoyou Xie, Xin Zhou, Jun Nie, linux-media, devicetree, linux-arm-kernel, Shawn Guo On Sun, Jul 30, 2017 at 09:23:13PM +0800, Shawn Guo wrote: > From: Shawn Guo <shawn.guo@linaro.org> > > It adds the remote control driver and corresponding keymap file for > IRDEC block found on ZTE ZX family SoCs. > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org> > --- > drivers/media/rc/Kconfig | 11 ++ > drivers/media/rc/Makefile | 1 + > drivers/media/rc/keymaps/Makefile | 3 +- > drivers/media/rc/keymaps/rc-zx-irdec.c | 79 ++++++++++++++ > drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++++++++++++++ > include/media/rc-map.h | 1 + > 6 files changed, 277 insertions(+), 1 deletion(-) > create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c > create mode 100644 drivers/media/rc/zx-irdec.c We're missing an MAINTAINERS entry for this driver. Could this be added please as a separate patch? Thanks Sean ^ permalink raw reply [flat|nested] 27+ messages in thread
[parent not found: <20170809130029.eneyqstlejfkotz2-3XSxi2G4b3iXFJAUJl40Xg@public.gmane.org>]
* Re: [PATCH v2 3/3] rc: add zx-irdec remote control driver 2017-08-09 13:00 ` Sean Young (?) @ 2017-08-09 13:48 ` Shawn Guo -1 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-08-09 13:48 UTC (permalink / raw) To: Sean Young Cc: Rob Herring, Baoyou Xie, Xin Zhou, Jun Nie, linux-media-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Shawn Guo Hi Sean, On Wed, Aug 09, 2017 at 02:00:29PM +0100, Sean Young wrote: > On Sun, Jul 30, 2017 at 09:23:13PM +0800, Shawn Guo wrote: > > From: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> > > > > It adds the remote control driver and corresponding keymap file for > > IRDEC block found on ZTE ZX family SoCs. > > > > Signed-off-by: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> > > --- > > drivers/media/rc/Kconfig | 11 ++ > > drivers/media/rc/Makefile | 1 + > > drivers/media/rc/keymaps/Makefile | 3 +- > > drivers/media/rc/keymaps/rc-zx-irdec.c | 79 ++++++++++++++ > > drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++++++++++++++ > > include/media/rc-map.h | 1 + > > 6 files changed, 277 insertions(+), 1 deletion(-) > > create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c > > create mode 100644 drivers/media/rc/zx-irdec.c > > We're missing an MAINTAINERS entry for this driver. Could this be added > please as a separate patch? We are using 'ARM/ZTE ARCHITECTURE' entry in MAINTAINERS for ZTE ZX drivers. I plan to send a separate patch going through arm-soc tree, updating MAINTAINERS for those new ZTE ZX drivers landed on mainline during 4.14 merge window. IRDEC will be covered by that patch. Is that okay? Shawn -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 3/3] rc: add zx-irdec remote control driver @ 2017-08-09 13:48 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-08-09 13:48 UTC (permalink / raw) To: linux-arm-kernel Hi Sean, On Wed, Aug 09, 2017 at 02:00:29PM +0100, Sean Young wrote: > On Sun, Jul 30, 2017 at 09:23:13PM +0800, Shawn Guo wrote: > > From: Shawn Guo <shawn.guo@linaro.org> > > > > It adds the remote control driver and corresponding keymap file for > > IRDEC block found on ZTE ZX family SoCs. > > > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org> > > --- > > drivers/media/rc/Kconfig | 11 ++ > > drivers/media/rc/Makefile | 1 + > > drivers/media/rc/keymaps/Makefile | 3 +- > > drivers/media/rc/keymaps/rc-zx-irdec.c | 79 ++++++++++++++ > > drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++++++++++++++ > > include/media/rc-map.h | 1 + > > 6 files changed, 277 insertions(+), 1 deletion(-) > > create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c > > create mode 100644 drivers/media/rc/zx-irdec.c > > We're missing an MAINTAINERS entry for this driver. Could this be added > please as a separate patch? We are using 'ARM/ZTE ARCHITECTURE' entry in MAINTAINERS for ZTE ZX drivers. I plan to send a separate patch going through arm-soc tree, updating MAINTAINERS for those new ZTE ZX drivers landed on mainline during 4.14 merge window. IRDEC will be covered by that patch. Is that okay? Shawn ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v2 3/3] rc: add zx-irdec remote control driver @ 2017-08-09 13:48 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-08-09 13:48 UTC (permalink / raw) To: Sean Young Cc: Rob Herring, Baoyou Xie, Xin Zhou, Jun Nie, linux-media, devicetree, linux-arm-kernel, Shawn Guo Hi Sean, On Wed, Aug 09, 2017 at 02:00:29PM +0100, Sean Young wrote: > On Sun, Jul 30, 2017 at 09:23:13PM +0800, Shawn Guo wrote: > > From: Shawn Guo <shawn.guo@linaro.org> > > > > It adds the remote control driver and corresponding keymap file for > > IRDEC block found on ZTE ZX family SoCs. > > > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org> > > --- > > drivers/media/rc/Kconfig | 11 ++ > > drivers/media/rc/Makefile | 1 + > > drivers/media/rc/keymaps/Makefile | 3 +- > > drivers/media/rc/keymaps/rc-zx-irdec.c | 79 ++++++++++++++ > > drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++++++++++++++ > > include/media/rc-map.h | 1 + > > 6 files changed, 277 insertions(+), 1 deletion(-) > > create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c > > create mode 100644 drivers/media/rc/zx-irdec.c > > We're missing an MAINTAINERS entry for this driver. Could this be added > please as a separate patch? We are using 'ARM/ZTE ARCHITECTURE' entry in MAINTAINERS for ZTE ZX drivers. I plan to send a separate patch going through arm-soc tree, updating MAINTAINERS for those new ZTE ZX drivers landed on mainline during 4.14 merge window. IRDEC will be covered by that patch. Is that okay? Shawn ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v2 3/3] rc: add zx-irdec remote control driver 2017-08-09 13:48 ` Shawn Guo @ 2017-08-09 14:42 ` Sean Young -1 siblings, 0 replies; 27+ messages in thread From: Sean Young @ 2017-08-09 14:42 UTC (permalink / raw) To: Shawn Guo Cc: Rob Herring, Baoyou Xie, Xin Zhou, Jun Nie, linux-media, devicetree, linux-arm-kernel, Shawn Guo Hi Shawn, On Wed, Aug 09, 2017 at 09:48:18PM +0800, Shawn Guo wrote: > On Wed, Aug 09, 2017 at 02:00:29PM +0100, Sean Young wrote: > > On Sun, Jul 30, 2017 at 09:23:13PM +0800, Shawn Guo wrote: > > > From: Shawn Guo <shawn.guo@linaro.org> > > > > > > It adds the remote control driver and corresponding keymap file for > > > IRDEC block found on ZTE ZX family SoCs. > > > > > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org> > > > --- > > > drivers/media/rc/Kconfig | 11 ++ > > > drivers/media/rc/Makefile | 1 + > > > drivers/media/rc/keymaps/Makefile | 3 +- > > > drivers/media/rc/keymaps/rc-zx-irdec.c | 79 ++++++++++++++ > > > drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++++++++++++++ > > > include/media/rc-map.h | 1 + > > > 6 files changed, 277 insertions(+), 1 deletion(-) > > > create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c > > > create mode 100644 drivers/media/rc/zx-irdec.c > > > > We're missing an MAINTAINERS entry for this driver. Could this be added > > please as a separate patch? > > We are using 'ARM/ZTE ARCHITECTURE' entry in MAINTAINERS for ZTE ZX > drivers. I plan to send a separate patch going through arm-soc tree, > updating MAINTAINERS for those new ZTE ZX drivers landed on mainline > during 4.14 merge window. IRDEC will be covered by that patch. Is that > okay? Of course. Thanks, Sean ^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 3/3] rc: add zx-irdec remote control driver @ 2017-08-09 14:42 ` Sean Young 0 siblings, 0 replies; 27+ messages in thread From: Sean Young @ 2017-08-09 14:42 UTC (permalink / raw) To: linux-arm-kernel Hi Shawn, On Wed, Aug 09, 2017 at 09:48:18PM +0800, Shawn Guo wrote: > On Wed, Aug 09, 2017 at 02:00:29PM +0100, Sean Young wrote: > > On Sun, Jul 30, 2017 at 09:23:13PM +0800, Shawn Guo wrote: > > > From: Shawn Guo <shawn.guo@linaro.org> > > > > > > It adds the remote control driver and corresponding keymap file for > > > IRDEC block found on ZTE ZX family SoCs. > > > > > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org> > > > --- > > > drivers/media/rc/Kconfig | 11 ++ > > > drivers/media/rc/Makefile | 1 + > > > drivers/media/rc/keymaps/Makefile | 3 +- > > > drivers/media/rc/keymaps/rc-zx-irdec.c | 79 ++++++++++++++ > > > drivers/media/rc/zx-irdec.c | 183 +++++++++++++++++++++++++++++++++ > > > include/media/rc-map.h | 1 + > > > 6 files changed, 277 insertions(+), 1 deletion(-) > > > create mode 100644 drivers/media/rc/keymaps/rc-zx-irdec.c > > > create mode 100644 drivers/media/rc/zx-irdec.c > > > > We're missing an MAINTAINERS entry for this driver. Could this be added > > please as a separate patch? > > We are using 'ARM/ZTE ARCHITECTURE' entry in MAINTAINERS for ZTE ZX > drivers. I plan to send a separate patch going through arm-soc tree, > updating MAINTAINERS for those new ZTE ZX drivers landed on mainline > during 4.14 merge window. IRDEC will be covered by that patch. Is that > okay? Of course. Thanks, Sean ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v2 0/3] Add ZTE zx-irdec remote control driver 2017-07-30 13:23 ` Shawn Guo (?) @ 2017-08-18 12:54 ` Shawn Guo -1 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-08-18 12:54 UTC (permalink / raw) To: Sean Young, Rob Herring Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Baoyou Xie, Xin Zhou, Jun Nie, Shawn Guo, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-media-u79uwXL29TY76Z2rM5mHXA On Sun, Jul 30, 2017 at 09:23:10PM +0800, Shawn Guo wrote: > From: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> > > The series adds dt-bindings and remote control driver for IRDEC block > found on ZTE ZX family SoCs. > > Changes for v2: > - Add one patch to move generic NEC scancode composing and protocol > type detection code from ir_nec_decode() into an inline shared > function, which can be reused by zx-irdec driver. > > Shawn Guo (3): > rc: ir-nec-decoder: move scancode composing code into a shared > function > dt-bindings: add bindings document for zx-irdec > rc: add zx-irdec remote control driver Hi Sean, We are getting close to 4.14 merge window. Can we get this into -next for a bit exposure, if you are fine with the patches? Shawn -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 0/3] Add ZTE zx-irdec remote control driver @ 2017-08-18 12:54 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-08-18 12:54 UTC (permalink / raw) To: linux-arm-kernel On Sun, Jul 30, 2017 at 09:23:10PM +0800, Shawn Guo wrote: > From: Shawn Guo <shawn.guo@linaro.org> > > The series adds dt-bindings and remote control driver for IRDEC block > found on ZTE ZX family SoCs. > > Changes for v2: > - Add one patch to move generic NEC scancode composing and protocol > type detection code from ir_nec_decode() into an inline shared > function, which can be reused by zx-irdec driver. > > Shawn Guo (3): > rc: ir-nec-decoder: move scancode composing code into a shared > function > dt-bindings: add bindings document for zx-irdec > rc: add zx-irdec remote control driver Hi Sean, We are getting close to 4.14 merge window. Can we get this into -next for a bit exposure, if you are fine with the patches? Shawn ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v2 0/3] Add ZTE zx-irdec remote control driver @ 2017-08-18 12:54 ` Shawn Guo 0 siblings, 0 replies; 27+ messages in thread From: Shawn Guo @ 2017-08-18 12:54 UTC (permalink / raw) To: Sean Young, Rob Herring Cc: devicetree, Baoyou Xie, Xin Zhou, Jun Nie, Shawn Guo, linux-arm-kernel, linux-media On Sun, Jul 30, 2017 at 09:23:10PM +0800, Shawn Guo wrote: > From: Shawn Guo <shawn.guo@linaro.org> > > The series adds dt-bindings and remote control driver for IRDEC block > found on ZTE ZX family SoCs. > > Changes for v2: > - Add one patch to move generic NEC scancode composing and protocol > type detection code from ir_nec_decode() into an inline shared > function, which can be reused by zx-irdec driver. > > Shawn Guo (3): > rc: ir-nec-decoder: move scancode composing code into a shared > function > dt-bindings: add bindings document for zx-irdec > rc: add zx-irdec remote control driver Hi Sean, We are getting close to 4.14 merge window. Can we get this into -next for a bit exposure, if you are fine with the patches? Shawn ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v2 0/3] Add ZTE zx-irdec remote control driver 2017-08-18 12:54 ` Shawn Guo (?) @ 2017-08-20 20:09 ` Sean Young -1 siblings, 0 replies; 27+ messages in thread From: Sean Young @ 2017-08-20 20:09 UTC (permalink / raw) To: Shawn Guo Cc: Rob Herring, devicetree-u79uwXL29TY76Z2rM5mHXA, Baoyou Xie, Xin Zhou, Jun Nie, Shawn Guo, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-media-u79uwXL29TY76Z2rM5mHXA On Fri, Aug 18, 2017 at 08:54:20PM +0800, Shawn Guo wrote: > On Sun, Jul 30, 2017 at 09:23:10PM +0800, Shawn Guo wrote: > > From: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> > > > > The series adds dt-bindings and remote control driver for IRDEC block > > found on ZTE ZX family SoCs. > > > > Changes for v2: > > - Add one patch to move generic NEC scancode composing and protocol > > type detection code from ir_nec_decode() into an inline shared > > function, which can be reused by zx-irdec driver. > > > > Shawn Guo (3): > > rc: ir-nec-decoder: move scancode composing code into a shared > > function > > dt-bindings: add bindings document for zx-irdec > > rc: add zx-irdec remote control driver > > Hi Sean, > > We are getting close to 4.14 merge window. Can we get this into -next > for a bit exposure, if you are fine with the patches? The rc pull requests have been merged into the media_tree, so they should now get exposure in linux-next. https://git.linuxtv.org/media_tree.git/ Thanks, Sean -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 0/3] Add ZTE zx-irdec remote control driver @ 2017-08-20 20:09 ` Sean Young 0 siblings, 0 replies; 27+ messages in thread From: Sean Young @ 2017-08-20 20:09 UTC (permalink / raw) To: linux-arm-kernel On Fri, Aug 18, 2017 at 08:54:20PM +0800, Shawn Guo wrote: > On Sun, Jul 30, 2017 at 09:23:10PM +0800, Shawn Guo wrote: > > From: Shawn Guo <shawn.guo@linaro.org> > > > > The series adds dt-bindings and remote control driver for IRDEC block > > found on ZTE ZX family SoCs. > > > > Changes for v2: > > - Add one patch to move generic NEC scancode composing and protocol > > type detection code from ir_nec_decode() into an inline shared > > function, which can be reused by zx-irdec driver. > > > > Shawn Guo (3): > > rc: ir-nec-decoder: move scancode composing code into a shared > > function > > dt-bindings: add bindings document for zx-irdec > > rc: add zx-irdec remote control driver > > Hi Sean, > > We are getting close to 4.14 merge window. Can we get this into -next > for a bit exposure, if you are fine with the patches? The rc pull requests have been merged into the media_tree, so they should now get exposure in linux-next. https://git.linuxtv.org/media_tree.git/ Thanks, Sean ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v2 0/3] Add ZTE zx-irdec remote control driver @ 2017-08-20 20:09 ` Sean Young 0 siblings, 0 replies; 27+ messages in thread From: Sean Young @ 2017-08-20 20:09 UTC (permalink / raw) To: Shawn Guo Cc: Rob Herring, devicetree, Baoyou Xie, Xin Zhou, Jun Nie, Shawn Guo, linux-arm-kernel, linux-media On Fri, Aug 18, 2017 at 08:54:20PM +0800, Shawn Guo wrote: > On Sun, Jul 30, 2017 at 09:23:10PM +0800, Shawn Guo wrote: > > From: Shawn Guo <shawn.guo@linaro.org> > > > > The series adds dt-bindings and remote control driver for IRDEC block > > found on ZTE ZX family SoCs. > > > > Changes for v2: > > - Add one patch to move generic NEC scancode composing and protocol > > type detection code from ir_nec_decode() into an inline shared > > function, which can be reused by zx-irdec driver. > > > > Shawn Guo (3): > > rc: ir-nec-decoder: move scancode composing code into a shared > > function > > dt-bindings: add bindings document for zx-irdec > > rc: add zx-irdec remote control driver > > Hi Sean, > > We are getting close to 4.14 merge window. Can we get this into -next > for a bit exposure, if you are fine with the patches? The rc pull requests have been merged into the media_tree, so they should now get exposure in linux-next. https://git.linuxtv.org/media_tree.git/ Thanks, Sean ^ permalink raw reply [flat|nested] 27+ messages in thread
end of thread, other threads:[~2017-08-20 20:09 UTC | newest] Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-07-30 13:23 [PATCH v2 0/3] Add ZTE zx-irdec remote control driver Shawn Guo 2017-07-30 13:23 ` Shawn Guo [not found] ` <1501420993-21977-1-git-send-email-shawnguo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 2017-07-30 13:23 ` [PATCH v2 1/3] rc: ir-nec-decoder: move scancode composing code into a shared function Shawn Guo 2017-07-30 13:23 ` Shawn Guo 2017-07-30 13:23 ` Shawn Guo 2017-07-30 13:23 ` [PATCH v2 2/3] dt-bindings: add bindings document for zx-irdec Shawn Guo 2017-07-30 13:23 ` Shawn Guo 2017-07-30 13:23 ` Shawn Guo 2017-08-03 23:36 ` Rob Herring 2017-08-03 23:36 ` Rob Herring 2017-07-30 13:23 ` [PATCH v2 3/3] rc: add zx-irdec remote control driver Shawn Guo 2017-07-30 13:23 ` Shawn Guo 2017-07-30 13:23 ` Shawn Guo [not found] ` <1501420993-21977-4-git-send-email-shawnguo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 2017-08-09 13:00 ` Sean Young 2017-08-09 13:00 ` Sean Young 2017-08-09 13:00 ` Sean Young [not found] ` <20170809130029.eneyqstlejfkotz2-3XSxi2G4b3iXFJAUJl40Xg@public.gmane.org> 2017-08-09 13:48 ` Shawn Guo 2017-08-09 13:48 ` Shawn Guo 2017-08-09 13:48 ` Shawn Guo 2017-08-09 14:42 ` Sean Young 2017-08-09 14:42 ` Sean Young 2017-08-18 12:54 ` [PATCH v2 0/3] Add ZTE " Shawn Guo 2017-08-18 12:54 ` Shawn Guo 2017-08-18 12:54 ` Shawn Guo 2017-08-20 20:09 ` Sean Young 2017-08-20 20:09 ` Sean Young 2017-08-20 20:09 ` Sean Young
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.