irblaster: meson: refactored irblaster driver [1/1]

PD#SWPL-1856

Problem:
refactored irblaster code

Solution:
1. Refactor the code according to the core, provider, and consumer
   frameworks.
2. Provide software encode to let irblaster work according to different
   protocols
3. Provide a unified consumer interface to allow other consumer drivers
   to use irblaster.

Verify:
test pass on g12a_u200_v1

Change-Id: Ifd841ef0ed741b7fd721defc25691744ea2103f0
Signed-off-by: Bichao Zheng <bichao.zheng@amlogic.com>
This commit is contained in:
Bichao Zheng
2019-03-01 14:33:02 +08:00
committed by Luke Go
parent f60997d442
commit f07216eb47
21 changed files with 186 additions and 116 deletions

View File

@@ -14066,13 +14066,6 @@ AMLOGIC AXG ADD AO CLK
M: Yun Cai <yun.cai@amlogic.com>
F: drivers/amlogic/clk/axg/axg_ao.c
AMLOGIC Irblaster driver
M: Zan Peng <zan.peng@amlogic.com>
F: drivers/amlogic/irblaster/irblaster.c
F: drivers/amlogic/irblaster/irblaster.h
F: drivers/amlogic/irblaster/Kconfig
F: drivers/amlogic/irblaster/Makefile
AMLOGIC AXG ADD CLKMSR INTERFACE
M: wang xing <xing.wang@amlogic.com>
F: include/linux/amlogic/clk_measure.h
@@ -14428,9 +14421,9 @@ F: drivers/amlogic/cpufreq/meson-cpufreq.c
F: drivers/amlogic/clk/clk-cpu-fclk-composite.c
AMLOGIC Irblaster driver
M: yu.tu <yu.tu@amlogic.com>
F: drivers/amlogic/irblaster/meson-irblaster.c
F: drivers/amlogic/irblaster/meson-irblaster.h
M: Bichao.Zheng <bichao.zheng@amlogic.com>
F: drivers/amlogic/irblaster/*
F: include/linux/amlogic/irblaster*
AMLOGIC THERMAL DRIVER
M: Huan Biao <huan.biao@amlogic.com>

View File

@@ -423,14 +423,6 @@
pinctrl-0 = <&b_uart_pins>;
};
meson-irblaster {
compatible = "amlogic, am_irblaster";
dev_name = "meson-irblaster";
status = "disable";
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
};
vpu {
compatible = "amlogic, vpu-axg";
dev_name = "vpu";

View File

@@ -316,14 +316,6 @@
pinctrl-0 = <&b_uart_pins>;
};
meson-irblaster {
compatible = "amlogic, am_irblaster";
dev_name = "meson-irblaster";
status = "disable";
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
};
/* Sound iomap */
aml_snd_iomap {
compatible = "amlogic, snd-iomap";

View File

@@ -468,6 +468,16 @@
clock-names = "clk_i2c";
clock-frequency = <100000>;
};
irblaster: meson-irblaster@c0 {
compatible = "amlogic, aml_irblaster";
reg = <0xc0 0xc>,
<0x40 0x4>;
#irblaster-cells = <2>;
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
status = "disabled";
};
};/* end of aobus */
periphs: periphs@ff634400 {
@@ -743,16 +753,6 @@
};
};
irblaster: meson-irblaster {
compatible = "amlogic, meson_irblaster";
reg = <0xff8000c0 0x10>,
<0xff800040 0x4>;
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
interrupts = <0 198 1>;
status = "disabled";
};
saradc:saradc {
compatible = "amlogic,meson-axg-saradc";
status = "okay";

View File

@@ -754,6 +754,17 @@
pinctrl-names = "default";
pinctrl-0 = <&ao_b_uart_pins>;
};
irblaster: meson-irblaster@14c {
compatible = "amlogic, meson_irblaster";
reg = <0x14c 0x10>,
<0x40 0x4>;
#irblaster-cells = <2>;
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
interrupts = <GIC_SPI 198 IRQ_TYPE_EDGE_RISING>;
status = "disabled";
};
};/* end of aobus */
periphs: periphs@ff634400 {
@@ -1337,15 +1348,6 @@
clocks = <&clkc CLKID_VPU_CLKC_MUX>;
clock-names = "vpu_clkc";
};
irblaster: meson-irblaster {
compatible = "amlogic, meson_irblaster";
reg = <0xff80014c 0x10>,
<0xff800040 0x4>;
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
interrupts = <0 198 1>;
status = "okay";
};
sd_emmc_c: emmc@ffe07000 {
status = "disabled";

View File

@@ -813,6 +813,15 @@
pinctrl-names = "default";
pinctrl-0 = <&ao_b_uart_pins>;
};
irblaster: meson-irblaster@14c {
compatible = "amlogic, meson_irblaster";
reg = <0x14c 0x10>,
<0x40 0x4>;
#irblaster-cells = <2>;
interrupts = <GIC_SPI 198 IRQ_TYPE_EDGE_RISING>;
status = "disabled";
};
};/* end of aobus */
periphs: periphs@ff634400 {
@@ -1451,15 +1460,6 @@
clocks = <&clkc CLKID_VPU_CLKC_MUX>;
clock-names = "vpu_clkc";
};
irblaster: meson-irblaster {
compatible = "amlogic, meson_irblaster";
reg = <0xff80014c 0x10>,
<0xff800040 0x4>;
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
interrupts = <0 198 1>;
status = "disabled";
};
sd_emmc_c: emmc@ffe07000 {
status = "disabled";

View File

@@ -524,6 +524,14 @@
clocks = <&clkc CLKID_I2C>;
clock-names = "clk_i2c";
};
irblaster: meson-irblaster@c0 {
compatible = "amlogic, aml_irblaster";
reg = <0xc0 0xc>,
<0x40 0x4>;
#irblaster-cells = <2>;
status = "disabled";
};
};
periphs: periphs@c8834000 {
@@ -637,6 +645,20 @@
function = "ee_cec";
};
};
irblaster_pins:irblaster_pin {
mux {
groups = "ir_out_ao7";
function = "ir_out";
};
};
irblaster_pins1:irblaster_pin1 {
mux {
groups = "ir_out_ao9";
function = "ir_out";
};
};
}; /* end of pinctrl_aobus*/
&pinctrl_periphs {

View File

@@ -633,6 +633,14 @@
clocks = <&clkc CLKID_I2C>;
clock-names = "clk_i2c";
};
irblaster: meson-irblaster@c0 {
compatible = "amlogic, aml_irblaster";
reg = <0xc0 0xc>,
<0x40 0x4>;
#irblaster-cells = <2>;
status = "disabled";
};
};
periphs: periphs@c8834000 {
@@ -739,6 +747,20 @@
function = "ee_cec";
};
};
irblaster_pins:irblaster_pin {
mux {
groups = "ir_out_ao7";
function = "ir_out";
};
};
irblaster_pins1:irblaster_pin1 {
mux {
groups = "ir_out_ao9";
function = "ir_out";
};
};
}; /* end of pinctrl_aobus*/
&pinctrl_periphs {

View File

@@ -841,12 +841,12 @@
status = "disabled";
};
meson-irblaster {
compatible = "amlogic, am_irblaster";
dev_name = "meson-irblaster";
status = "disable";
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
irblaster: meson-irblaster@c0 {
compatible = "amlogic, aml_irblaster";
reg = <0xc0 0xc>,
<0x40 0x4>;
#irblaster-cells = <2>;
status = "disabled";
};
@@ -1024,6 +1024,13 @@
};
};
irblaster_pins1:irblaster_pin1 {
mux {
groups = "remote_out_ao6";
function = "ir_out";
};
};
pwmleds_pins:pwmleds {
mux {

View File

@@ -366,7 +366,9 @@ CONFIG_AMLOGIC_WIFI=y
CONFIG_AMLOGIC_BT_DEVICE=y
CONFIG_AMLOGIC_POWER=y
CONFIG_AMLOGIC_PCIE=y
CONFIG_AMLOGIC_IRBLASTER=y
CONFIG_AMLOGIC_IRBLASTER_CORE=y
CONFIG_AMLOGIC_IRBLASTER_MESON=y
CONFIG_AMLOGIC_IRBLASTER_PROTOCOL=y
CONFIG_AMLOGIC_IIO=y
CONFIG_AMLOGIC_SARADC=y
CONFIG_AMLOGIC_DDR_TOOL=y

View File

@@ -423,14 +423,6 @@
pinctrl-0 = <&b_uart_pins>;
};
meson-irblaster {
compatible = "amlogic, am_irblaster";
dev_name = "meson-irblaster";
status = "disable";
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
};
vpu {
compatible = "amlogic, vpu-axg";
dev_name = "vpu";

View File

@@ -316,14 +316,6 @@
pinctrl-0 = <&b_uart_pins>;
};
meson-irblaster {
compatible = "amlogic, am_irblaster";
dev_name = "meson-irblaster";
status = "disable";
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
};
/* Sound iomap */
aml_snd_iomap {
compatible = "amlogic, snd-iomap";

View File

@@ -474,6 +474,16 @@
clock-names = "clk_i2c";
clock-frequency = <100000>;
};
irblaster: meson-irblaster@c0 {
compatible = "amlogic, aml_irblaster";
reg = <0x0 0xc0 0x0 0xc>,
<0x0 0x40 0x0 0x4>;
#irblaster-cells = <2>;
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
status = "disabled";
};
};/* end of aobus */
periphs: periphs@ff634400 {
@@ -749,16 +759,6 @@
};
};
irblaster: meson-irblaster {
compatible = "amlogic, meson_irblaster";
reg = <0x0 0xff8000c0 0x0 0x10>,
<0x0 0xff800040 0x0 0x4>;
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
interrupts = <0 198 1>;
status = "disabled";
};
saradc:saradc {
compatible = "amlogic,meson-axg-saradc";
status = "okay";

View File

@@ -754,6 +754,17 @@
pinctrl-names = "default";
pinctrl-0 = <&ao_b_uart_pins>;
};
irblaster: meson-irblaster@14c {
compatible = "amlogic, meson_irblaster";
reg = <0x0 0x14c 0x0 0x10>,
<0x0 0x40 0x0 0x4>;
#irblaster-cells = <2>;
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
interrupts = <GIC_SPI 198 IRQ_TYPE_EDGE_RISING>;
status = "disabled";
};
};/* end of aobus */
periphs: periphs@ff634400 {
@@ -1337,15 +1348,6 @@
clocks = <&clkc CLKID_VPU_CLKC_MUX>;
clock-names = "vpu_clkc";
};
irblaster: meson-irblaster {
compatible = "amlogic, meson_irblaster";
reg = <0x0 0xff80014c 0x0 0x10>,
<0x0 0xff800040 0x0 0x4>;
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
interrupts = <0 198 1>;
status = "okay";
};
sd_emmc_c: emmc@ffe07000 {
status = "disabled";

View File

@@ -813,6 +813,15 @@
pinctrl-names = "default";
pinctrl-0 = <&ao_b_uart_pins>;
};
irblaster: meson-irblaster@14c {
compatible = "amlogic, meson_irblaster";
reg = <0x0 0x14c 0x0 0x10>,
<0x0 0x40 0x0 0x4>;
#irblaster-cells = <2>;
interrupts = <GIC_SPI 198 IRQ_TYPE_EDGE_RISING>;
status = "disabled";
};
};/* end of aobus */
periphs: periphs@ff634400 {
@@ -1436,15 +1445,6 @@
clocks = <&clkc CLKID_VPU_CLKC_MUX>;
clock-names = "vpu_clkc";
};
irblaster: meson-irblaster {
compatible = "amlogic, meson_irblaster";
reg = <0x0 0xff80014c 0x0 0x10>,
<0x0 0xff800040 0x0 0x4>;
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
interrupts = <0 198 1>;
status = "disabled";
};
sd_emmc_c: emmc@ffe07000 {
status = "disabled";

View File

@@ -511,6 +511,14 @@
clocks = <&clkc CLKID_I2C>;
clock-names = "clk_i2c";
};
irblaster: meson-irblaster@c0 {
compatible = "amlogic, aml_irblaster";
reg = <0x0 0xc0 0x0 0xc>,
<0x0 0x40 0x0 0x4>;
#irblaster-cells = <2>;
status = "disabled";
};
};
periphs: periphs@c8834000 {
@@ -625,6 +633,19 @@
};
};
irblaster_pins:irblaster_pin {
mux {
groups = "ir_out_ao7";
function = "ir_out";
};
};
irblaster_pins1:irblaster_pin1 {
mux {
groups = "ir_out_ao9";
function = "ir_out";
};
};
}; /* end of pinctrl_aobus*/
&pinctrl_periphs {

View File

@@ -634,6 +634,14 @@
clocks = <&clkc CLKID_I2C>;
clock-names = "clk_i2c";
};
irblaster: meson-irblaster@c0 {
compatible = "amlogic, aml_irblaster";
reg = <0x0 0xc0 0x0 0xc>,
<0x0 0x40 0x0 0x4>;
#irblaster-cells = <2>;
status = "disabled";
};
};
periphs: periphs@c8834000 {
@@ -740,6 +748,20 @@
function = "ee_cec";
};
};
irblaster_pins:irblaster_pin {
mux {
groups = "ir_out_ao7";
function = "ir_out";
};
};
irblaster_pins1:irblaster_pin1 {
mux {
groups = "ir_out_ao9";
function = "ir_out";
};
};
}; /* end of pinctrl_aobus*/
&pinctrl_periphs {

View File

@@ -985,11 +985,12 @@
max_frame_time = <200>;
};
meson_irblaster: irblaster@14c {
irblaster: meson-irblaster@14c {
compatible = "amlogic, meson_irblaster";
reg = <0x0 0x14c 0x0 0x10>,
<0x0 0x40 0x0 0x4>;
interrupts = <0 198 1>;
#irblaster-cells = <2>;
interrupts = <GIC_SPI 198 IRQ_TYPE_EDGE_RISING>;
status = "disabled";
};

View File

@@ -841,15 +841,14 @@
status = "disabled";
};
meson-irblaster {
compatible = "amlogic, am_irblaster";
dev_name = "meson-irblaster";
status = "disable";
pinctrl-names = "default";
pinctrl-0 = <&irblaster_pins>;
irblaster: meson-irblaster@c0 {
compatible = "amlogic, aml_irblaster";
reg = <0x0 0xc0 0x0 0xc>,
<0x0 0x40 0x0 0x4>;
#irblaster-cells = <2>;
status = "disabled";
};
remote: rc@8040 {
compatible = "amlogic, aml_remote";
dev_name = "meson-remote";
@@ -1024,6 +1023,13 @@
};
};
irblaster_pins1:irblaster_pin1 {
mux {
groups = "remote_out_ao6";
function = "ir_out";
};
};
pwmleds_pins:pwmleds {
mux {

View File

@@ -360,7 +360,9 @@ CONFIG_AMLOGIC_WIFI=y
CONFIG_AMLOGIC_BT_DEVICE=y
CONFIG_AMLOGIC_POWER=y
CONFIG_AMLOGIC_PCIE=y
CONFIG_AMLOGIC_IRBLASTER=y
CONFIG_AMLOGIC_IRBLASTER_CORE=y
CONFIG_AMLOGIC_IRBLASTER_MESON=y
CONFIG_AMLOGIC_IRBLASTER_PROTOCOL=y
CONFIG_AMLOGIC_IIO=y
CONFIG_AMLOGIC_SARADC=y
CONFIG_AMLOGIC_DDR_TOOL=y

View File

@@ -112,7 +112,7 @@ obj-$(CONFIG_AMLOGIC_POWER) += power/
obj-$(CONFIG_AMLOGIC_PCIE) += pci/
obj-$(CONFIG_AMLOGIC_IRBLASTER) += irblaster/
obj-$(CONFIG_AMLOGIC_IRBLASTER_CORE) += irblaster/
obj-$(CONFIG_AMLOGIC_IIO) += iio/