diff --git a/Documentation/devicetree/bindings/amlogic/i2c-meson.txt b/Documentation/devicetree/bindings/amlogic/i2c-meson.txt index de9da308ef6c..dac6160371dc 100644 --- a/Documentation/devicetree/bindings/amlogic/i2c-meson.txt +++ b/Documentation/devicetree/bindings/amlogic/i2c-meson.txt @@ -2,9 +2,10 @@ Amlogic Meson I2C controller Required properties: - compatible: must be "amlogic,meson6-i2c" - or "amlogic,meson-gxbb-i2c" + or "amlogic,meson-gx-i2c" or "amlogic,meson-axg-i2c" or "amlogic,meson-txlx-i2c" + or "amlogic,meson8b-i2c" - reg: physical address and length of the device registers - interrupts: a single interrupt specifier - clocks: clock for the device diff --git a/arch/arm/boot/dts/amlogic/meson8b.dtsi b/arch/arm/boot/dts/amlogic/meson8b.dtsi index 6a09eb2fe7f3..155e3ed58ce0 100644 --- a/arch/arm/boot/dts/amlogic/meson8b.dtsi +++ b/arch/arm/boot/dts/amlogic/meson8b.dtsi @@ -14,7 +14,7 @@ * more details. * */ - +#include #include #include #include @@ -67,80 +67,15 @@ }; }; - i2c_ao: i2c@c8100500{ /*I2C-AO*/ - compatible = "amlogic, meson-i2c"; - dev_name = "i2c-AO"; - status = "disabled"; - reg = <0xc8100500 0x1d>; - device_id = <0>; - pinctrl-names="default"; - pinctrl-0=<&ao_i2c_master>; - #address-cells = <1>; - #size-cells = <0>; - use_pio = <0>; - master_i2c_speed = <100000>; - clocks = <&clkc CLKID_CLK81>; - clock-names = "clk_i2c"; - }; - i2c_a: i2c@c1108500{ /*I2C-A*/ - compatible = "amlogic, meson-i2c"; - dev_name = "i2c-A"; - status = "disabled"; - reg = <0xc1108500 0x20>; - device_id = <1>; - pinctrl-names="default"; - pinctrl-0=<&a_i2c_master>; - #address-cells = <1>; - #size-cells = <0>; - use_pio = <0>; - master_i2c_speed = <300000>; - clocks = <&clkc CLKID_CLK81>; - clock-names = "clk_i2c"; - }; - i2c_b: i2c@c11087c0{ /*I2C-B*/ - compatible = "amlogic, meson-i2c"; - dev_name = "i2c-B"; - status = "disabled"; - reg = <0xc11087c0 0x20>; - device_id = <2>; - pinctrl-names="default"; - pinctrl-0=<&b_i2c_master>; - #address-cells = <1>; - #size-cells = <0>; - use_pio = <0>; - master_i2c_speed = <300000>; - clocks = <&clkc CLKID_CLK81>; - clock-names = "clk_i2c"; - }; - i2c_c: i2c@c11087e0{ /*I2C-C*/ - compatible = "amlogic, meson-i2c"; - dev_name = "i2c-C"; - status = "disabled"; - reg = <0xc11087e0 0x20>; - device_id = <3>; - pinctrl-names="default"; - pinctrl-0=<&c_i2c_master>; - #address-cells = <1>; - #size-cells = <0>; - use_pio = <0>; - master_i2c_speed = <300000>; - clocks = <&clkc CLKID_CLK81>; - clock-names = "clk_i2c"; - }; - i2c_d: i2c@c1108d20{ /*I2C-D*/ - compatible = "amlogic, meson-i2c"; - dev_name = "i2c-D"; - status = "disabled"; - reg = <0xc1108d20 0x20>; - device_id = <4>; - pinctrl-names="default"; - pinctrl-0=<&d_i2c_master>; - #address-cells = <1>; - #size-cells = <0>; - use_pio = <0>; - master_i2c_speed = <300000>; - clocks = <&clkc CLKID_CLK81>; - clock-names = "clk_i2c"; + i2c_AO: i2c@0100 { + compatible = "amlogic,meson8b-i2c"; + status = "disabled"; + reg = <0xc8100500 0x20>; + interrupts = ; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clkc CLKID_CLK81>; + clock-names = "clk_i2c"; }; soc { @@ -357,6 +292,58 @@ status = "disabled"; }; + /*i2c-A*/ + i2c0: i2c@8500 { + compatible = "amlogic,meson8b-i2c"; + status = "disabled"; + reg = <0xc1108500 0x20>; + interrupts = , + ; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clkc CLKID_CLK81>; + clock-names = "clk_i2c"; + }; + + /*i2c-B*/ + i2c1: i2c@87c0 { + compatible = "amlogic,meson8b-i2c"; + status = "disabled"; + reg = <0xc11087c0 0x20>; + interrupts = , + ; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clkc CLKID_CLK81>; + clock-names = "clk_i2c"; + }; + + /*i2c-C*/ + i2c2: i2c@87e0 { + compatible = "amlogic,meson8b-i2c"; + status = "disabled"; + reg = <0xc11087e0 0x20>; + interrupts = , + ; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clkc CLKID_CLK81>; + clock-names = "clk_i2c"; + }; + + /*i2c-D*/ + i2c3: i2c@8d20 { + compatible = "amlogic,meson8b-i2c"; + status = "disabled"; + reg = <0xc1108d20 0x20>; + interrupts = , + ; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clkc CLKID_CLK81>; + clock-names = "clk_i2c"; + }; + pinctrl_cbus: pinctrl@c1109880 { compatible = "amlogic,meson8b-cbus-pinctrl"; #address-cells = <1>; diff --git a/arch/arm/boot/dts/amlogic/meson8b_m200.dts b/arch/arm/boot/dts/amlogic/meson8b_m200.dts index 8f8e40b9c8f6..541102de17a5 100644 --- a/arch/arm/boot/dts/amlogic/meson8b_m200.dts +++ b/arch/arm/boot/dts/amlogic/meson8b_m200.dts @@ -605,11 +605,15 @@ pinctrl-0 = <&uart_b0_pins>; pinctrl-names = "default"; }; -&i2c_a { +&i2c0 { status = "ok"; + pinctrl-names="default"; + pinctrl-0=<&a_i2c_master>; }; -&i2c_ao { +&i2c_AO { status = "ok"; + pinctrl-names="default"; + pinctrl-0=<&ao_i2c_master>; }; &pinctrl_cbus { sdhc_emmc_clk_cmd_pins:sdhc_emmc_clk_cmd_pins { diff --git a/arch/arm/boot/dts/amlogic/meson8b_m400.dts b/arch/arm/boot/dts/amlogic/meson8b_m400.dts index 42f0b4cae8b4..d0614ac149c7 100644 --- a/arch/arm/boot/dts/amlogic/meson8b_m400.dts +++ b/arch/arm/boot/dts/amlogic/meson8b_m400.dts @@ -608,9 +608,9 @@ pinctrl-0 = <&uart_ao_a_pins>; pinctrl-names = "default"; }; -&i2c_a { +&i2c0 { status = "ok"; }; -&i2c_ao { +&i2c_AO { status = "ok"; }; diff --git a/arch/arm/boot/dts/amlogic/meson8b_skt.dts b/arch/arm/boot/dts/amlogic/meson8b_skt.dts index aca3210cc6c8..977984bd8a3d 100644 --- a/arch/arm/boot/dts/amlogic/meson8b_skt.dts +++ b/arch/arm/boot/dts/amlogic/meson8b_skt.dts @@ -495,10 +495,10 @@ pinctrl-0 = <&uart_b0_pins>; pinctrl-names = "default"; }; -&i2c_a { +&i2c0 { status = "ok"; }; -&i2c_ao { +&i2c_AO { status = "ok"; }; diff --git a/arch/arm64/boot/dts/amlogic/axg_a113d_skt.dts b/arch/arm64/boot/dts/amlogic/axg_a113d_skt.dts index f87c10c2b5fe..c364afb60860 100644 --- a/arch/arm64/boot/dts/amlogic/axg_a113d_skt.dts +++ b/arch/arm64/boot/dts/amlogic/axg_a113d_skt.dts @@ -708,8 +708,8 @@ /* for spk board */ &i2c1 { status = "okay"; - //pinctrl-names="default"; - //pinctrl-0=<&b_i2c_master>; + pinctrl-names="default"; + pinctrl-0=<&b_i2c_master>; tlv320adc3101_32: tlv320adc3101_32@30 { compatible = "ti,tlv320adc3101"; #sound-dai-cells = <0>; diff --git a/arch/arm64/boot/dts/amlogic/axg_a113x_skt.dts b/arch/arm64/boot/dts/amlogic/axg_a113x_skt.dts index 3ecda5815d12..73f0bfe87597 100644 --- a/arch/arm64/boot/dts/amlogic/axg_a113x_skt.dts +++ b/arch/arm64/boot/dts/amlogic/axg_a113x_skt.dts @@ -702,8 +702,8 @@ /* for spk board */ &i2c1 { status = "okay"; - //pinctrl-names="default"; - //pinctrl-0=<&b_i2c_master>; + pinctrl-names="default"; + pinctrl-0=<&b_i2c_master>; tlv320adc3101_32: tlv320adc3101_32@30 { compatible = "ti,tlv320adc3101"; #sound-dai-cells = <0>; diff --git a/arch/arm64/boot/dts/amlogic/axg_s400.dts b/arch/arm64/boot/dts/amlogic/axg_s400.dts index 61e6f06596a9..a381e78aebeb 100644 --- a/arch/arm64/boot/dts/amlogic/axg_s400.dts +++ b/arch/arm64/boot/dts/amlogic/axg_s400.dts @@ -882,8 +882,9 @@ /* for spk board */ &i2c1 { status = "okay"; - //pinctrl-names="default"; - //pinctrl-0=<&b_i2c_master>; + pinctrl-names="default"; + pinctrl-0=<&b_i2c_master>; + tlv320adc3101_32: tlv320adc3101_32@32 { compatible = "ti,tlv320adc3101"; #sound-dai-cells = <0>; diff --git a/arch/arm64/boot/dts/amlogic/axg_s400_v03.dts b/arch/arm64/boot/dts/amlogic/axg_s400_v03.dts index 87c0060dbe98..549b5cc085f0 100644 --- a/arch/arm64/boot/dts/amlogic/axg_s400_v03.dts +++ b/arch/arm64/boot/dts/amlogic/axg_s400_v03.dts @@ -882,8 +882,9 @@ /* for spk board */ &i2c1 { status = "okay"; - //pinctrl-names="default"; - //pinctrl-0=<&b_i2c_master>; + pinctrl-names="default"; + pinctrl-0=<&b_i2c_master>; + tlv320adc3101_32: tlv320adc3101_32@32 { compatible = "ti,tlv320adc3101"; #sound-dai-cells = <0>; diff --git a/arch/arm64/boot/dts/amlogic/axg_s400emmc.dts b/arch/arm64/boot/dts/amlogic/axg_s400emmc.dts index 107b20ca22c8..8d7c7f2e4b84 100644 --- a/arch/arm64/boot/dts/amlogic/axg_s400emmc.dts +++ b/arch/arm64/boot/dts/amlogic/axg_s400emmc.dts @@ -883,8 +883,9 @@ /* for spk board */ &i2c1 { status = "okay"; - //pinctrl-names="default"; - //pinctrl-0=<&b_i2c_master>; + pinctrl-names="default"; + pinctrl-0=<&b_i2c_master>; + tlv320adc3101_32: tlv320adc3101_32@32 { compatible = "ti,tlv320adc3101"; #sound-dai-cells = <0>; diff --git a/arch/arm64/boot/dts/amlogic/axg_s400emmc_v03.dts b/arch/arm64/boot/dts/amlogic/axg_s400emmc_v03.dts index 78f4176e4af2..90bfac3d4905 100644 --- a/arch/arm64/boot/dts/amlogic/axg_s400emmc_v03.dts +++ b/arch/arm64/boot/dts/amlogic/axg_s400emmc_v03.dts @@ -884,8 +884,9 @@ /* for spk board */ &i2c1 { status = "okay"; - //pinctrl-names="default"; - //pinctrl-0=<&b_i2c_master>; + pinctrl-names="default"; + pinctrl-0=<&b_i2c_master>; + tlv320adc3101_32: tlv320adc3101_32@32 { compatible = "ti,tlv320adc3101"; #sound-dai-cells = <0>; diff --git a/arch/arm64/boot/dts/amlogic/axg_s420.dts b/arch/arm64/boot/dts/amlogic/axg_s420.dts index cd5eaf1e7a77..efac154e0334 100644 --- a/arch/arm64/boot/dts/amlogic/axg_s420.dts +++ b/arch/arm64/boot/dts/amlogic/axg_s420.dts @@ -709,8 +709,9 @@ /* for spk board */ &i2c1 { status = "okay"; - //pinctrl-names="default"; - //pinctrl-0=<&b_i2c_master>; + pinctrl-names="default"; + pinctrl-0=<&b_i2c_master>; + tlv320adc3101_32: tlv320adc3101_32@30 { compatible = "ti,tlv320adc3101"; #sound-dai-cells = <0>; diff --git a/arch/arm64/boot/dts/amlogic/axg_s420_128m.dts b/arch/arm64/boot/dts/amlogic/axg_s420_128m.dts index 8cfe0ab93a39..5c0375584994 100644 --- a/arch/arm64/boot/dts/amlogic/axg_s420_128m.dts +++ b/arch/arm64/boot/dts/amlogic/axg_s420_128m.dts @@ -707,8 +707,9 @@ /* for spk board */ &i2c1 { status = "okay"; - //pinctrl-names="default"; - //pinctrl-0=<&b_i2c_master>; + pinctrl-names="default"; + pinctrl-0=<&b_i2c_master>; + tlv320adc3101_32: tlv320adc3101_32@30 { compatible = "ti,tlv320adc3101"; #sound-dai-cells = <0>; diff --git a/arch/arm64/boot/dts/amlogic/axg_s420_v03.dts b/arch/arm64/boot/dts/amlogic/axg_s420_v03.dts index f3ffb3238d66..7186ab1dbbbf 100644 --- a/arch/arm64/boot/dts/amlogic/axg_s420_v03.dts +++ b/arch/arm64/boot/dts/amlogic/axg_s420_v03.dts @@ -709,8 +709,9 @@ /* for spk board */ &i2c1 { status = "okay"; - //pinctrl-names="default"; - //pinctrl-0=<&b_i2c_master>; + pinctrl-names="default"; + pinctrl-0=<&b_i2c_master>; + tlv320adc3101_32: tlv320adc3101_32@30 { compatible = "ti,tlv320adc3101"; #sound-dai-cells = <0>; diff --git a/arch/arm64/boot/dts/amlogic/mesonaxg.dtsi b/arch/arm64/boot/dts/amlogic/mesonaxg.dtsi index 6ab6bdee7f59..9d3b953de081 100644 --- a/arch/arm64/boot/dts/amlogic/mesonaxg.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesonaxg.dtsi @@ -345,7 +345,7 @@ /*i2c-A*/ i2c0: i2c@1f000 { - compatible = "amlogic,meson-txlx-i2c"; + compatible = "amlogic,meson-axg-i2c"; status = "disabled"; reg = <0x0 0x1f000 0x0 0x20>; interrupts = , @@ -358,7 +358,7 @@ /*i2c-B*/ i2c1: i2c@1e000 { - compatible = "amlogic,meson-txlx-i2c"; + compatible = "amlogic,meson-axg-i2c"; status = "disabled"; reg = <0x0 0x1e000 0x0 0x20>; interrupts = , @@ -371,7 +371,7 @@ /*i2c-C*/ i2c2: i2c@1d000 { - compatible = "amlogic,meson-txlx-i2c"; + compatible = "amlogic,meson-axg-i2c"; status = "disabled"; reg = <0x0 0x1d000 0x0 0x20>; interrupts = , @@ -414,7 +414,7 @@ }; i2c_AO: i2c@5000 { - compatible = "amlogic,meson-txlx-i2c"; + compatible = "amlogic,meson-axg-i2c"; status = "disabled"; reg = <0x0 0x05000 0x0 0x20>; interrupts = ; diff --git a/arch/arm64/boot/dts/amlogic/mesongxl.dtsi b/arch/arm64/boot/dts/amlogic/mesongxl.dtsi index b56dc046c822..79a7453af36c 100644 --- a/arch/arm64/boot/dts/amlogic/mesongxl.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesongxl.dtsi @@ -428,7 +428,7 @@ /*i2c-A*/ i2c0: i2c@8500 { - compatible = "amlogic,meson-txlx-i2c"; + compatible = "amlogic,meson-gx-i2c"; status = "disabled"; reg = <0x0 0x8500 0x0 0x20>; interrupts = , @@ -441,7 +441,7 @@ /*i2c-B*/ i2c1: i2c@87c0 { - compatible = "amlogic,meson-txlx-i2c"; + compatible = "amlogic,meson-gx-i2c"; status = "disabled"; reg = <0x0 0x87c0 0x0 0x20>; interrupts = , @@ -454,7 +454,7 @@ /*i2c-C*/ i2c2: i2c@87e0 { - compatible = "amlogic,meson-txlx-i2c"; + compatible = "amlogic,meson-gx-i2c"; status = "disabled"; reg = <0x0 0x87e0 0x0 0x20>; interrupts = , @@ -467,7 +467,7 @@ /*i2c-D*/ i2c3: i2c@8d20 { - compatible = "amlogic,meson-axg-i2c"; + compatible = "amlogic,meson-gx-i2c"; status = "disabled"; reg = <0x0 0x8d20 0x0 0x20>; interrupts = , @@ -490,10 +490,10 @@ reg=<0x0 0x0220 0x0 0x4>; }; - i2c_AO: i2c@0100 { - compatible = "amlogic,meson-txlx-i2c"; + i2c_AO: i2c@0500 { + compatible = "amlogic,meson-gx-i2c"; status = "disabled"; - reg = <0x0 0x0100 0x0 0x20>; + reg = <0x0 0x0500 0x0 0x20>; interrupts = ; #address-cells = <1>; #size-cells = <0>; diff --git a/arch/arm64/boot/dts/amlogic/mesongxm.dtsi b/arch/arm64/boot/dts/amlogic/mesongxm.dtsi index 955b639df3f5..b33ce50de6bd 100644 --- a/arch/arm64/boot/dts/amlogic/mesongxm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesongxm.dtsi @@ -511,7 +511,7 @@ /*i2c-A*/ i2c0: i2c@8500 { - compatible = "amlogic,meson-txlx-i2c"; + compatible = "amlogic,meson-gx-i2c"; status = "disabled"; reg = <0x0 0x8500 0x0 0x20>; interrupts = , @@ -524,7 +524,7 @@ /*i2c-B*/ i2c1: i2c@87c0 { - compatible = "amlogic,meson-txlx-i2c"; + compatible = "amlogic,meson-gx-i2c"; status = "disabled"; reg = <0x0 0x87c0 0x0 0x20>; interrupts = , @@ -537,7 +537,7 @@ /*i2c-C*/ i2c2: i2c@87e0 { - compatible = "amlogic,meson-txlx-i2c"; + compatible = "amlogic,meson-gx-i2c"; status = "disabled"; reg = <0x0 0x87e0 0x0 0x20>; interrupts = , @@ -550,7 +550,7 @@ /*i2c-D*/ i2c3: i2c@8d20 { - compatible = "amlogic,meson-axg-i2c"; + compatible = "amlogic,meson-gx-i2c"; status = "disabled"; reg = <0x0 0x8d20 0x0 0x20>; interrupts = , @@ -573,10 +573,10 @@ reg=<0x0 0x0220 0x0 0x4>; }; - i2c_AO: i2c@0100 { - compatible = "amlogic,meson-txlx-i2c"; + i2c_AO: i2c@0500 { + compatible = "amlogic,meson-gx-i2c"; status = "disabled"; - reg = <0x0 0x0100 0x0 0x20>; + reg = <0x0 0x0500 0x0 0x20>; interrupts = ; #address-cells = <1>; #size-cells = <0>; diff --git a/arch/arm64/boot/dts/amlogic/mesontxlx.dtsi b/arch/arm64/boot/dts/amlogic/mesontxlx.dtsi index 6c70145d83d7..4572a8e557da 100644 --- a/arch/arm64/boot/dts/amlogic/mesontxlx.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesontxlx.dtsi @@ -600,7 +600,7 @@ }; i2c3: i2c@1c000 { - compatible = "amlogic,meson-axg-i2c"; + compatible = "amlogic,meson-txlx-i2c"; status = "disabled"; reg = <0x0 0x1c000 0x0 0x20>; interrupts = , diff --git a/drivers/amlogic/i2c/i2c-meson-master.c b/drivers/amlogic/i2c/i2c-meson-master.c index e683b8cea4e5..08566a14dab2 100644 --- a/drivers/amlogic/i2c/i2c-meson-master.c +++ b/drivers/amlogic/i2c/i2c-meson-master.c @@ -507,7 +507,12 @@ static const struct meson_i2c_data i2c_meson6_data = { .delay_ajust = 15, }; -static const struct meson_i2c_data i2c_gxbb_data = { +static const struct meson_i2c_data i2c_meson8b_data = { + .div_factor = 4, + .delay_ajust = 15, +}; + +static const struct meson_i2c_data i2c_gx_data = { .div_factor = 4, .delay_ajust = 15, }; @@ -524,7 +529,8 @@ static const struct meson_i2c_data i2c_txlx_data = { static const struct of_device_id meson_i2c_match[] = { { .compatible = "amlogic,meson6-i2c", .data = &i2c_meson6_data }, - { .compatible = "amlogic,meson-gxbb-i2c", .data = &i2c_gxbb_data }, + { .compatible = "amlogic,meson8b-i2c", .data = &i2c_meson8b_data }, + { .compatible = "amlogic,meson-gx-i2c", .data = &i2c_gx_data }, { .compatible = "amlogic,meson-axg-i2c", .data = &i2c_axg_data }, { .compatible = "amlogic,meson-txlx-i2c", .data = &i2c_txlx_data }, {},