[PATCH 1/3] dts: aspeed: Add node for AST2600 I2C and I2CS
From: Jamin Lin
Date: Thu Jun 17 2021 - 05:46:24 EST
Support byte-mode, dma-mode and buffer-mode for
data transfer of I2C. Add i2c-global-regs node
to support the new register set Add node to
support I2CS.
Signed-off-by: Jamin Lin <jamin_lin@xxxxxxxxxxxxxx>
---
arch/arm/boot/dts/aspeed-g6.dtsi | 150 ++++++++++++++++++++++++-------
1 file changed, 118 insertions(+), 32 deletions(-)
diff --git a/arch/arm/boot/dts/aspeed-g6.dtsi b/arch/arm/boot/dts/aspeed-g6.dtsi
index f96607b7b4e2..e83df01123fe 100644
--- a/arch/arm/boot/dts/aspeed-g6.dtsi
+++ b/arch/arm/boot/dts/aspeed-g6.dtsi
@@ -667,6 +667,13 @@
clocks = <&syscon ASPEED_CLK_GATE_FSICLK>;
status = "disabled";
};
+
+ i2csec: bus@1e7a8000 {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0x1e7a8000 0x1000>;
+ };
};
};
};
@@ -674,12 +681,20 @@
#include "aspeed-g6-pinctrl.dtsi"
&i2c {
+
+ i2c_gr: i2c-global-regs@0 {
+ compatible = "aspeed,ast2600-i2c-global", "syscon";
+ reg = <0x0 0x20>;
+ clocks = <&syscon ASPEED_CLK_APB2>;
+ resets = <&syscon ASPEED_RESET_I2C>;
+ };
+
i2c0: i2c-bus@80 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x80 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x80 0x80>, <0xC00 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
@@ -690,11 +705,11 @@
};
i2c1: i2c-bus@100 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x100 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x100 0x80>, <0xC20 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
@@ -705,11 +720,11 @@
};
i2c2: i2c-bus@180 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x180 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x180 0x80>, <0xC40 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
@@ -720,11 +735,11 @@
};
i2c3: i2c-bus@200 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x200 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x200 0x80>, <0xC60 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
@@ -735,11 +750,11 @@
};
i2c4: i2c-bus@280 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x280 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x280 0x80>, <0xC80 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
@@ -750,11 +765,11 @@
};
i2c5: i2c-bus@300 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x300 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x300 0x80>, <0xCA0 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
@@ -765,11 +780,11 @@
};
i2c6: i2c-bus@380 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x380 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x380 0x80>, <0xCC0 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
@@ -780,11 +795,11 @@
};
i2c7: i2c-bus@400 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x400 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x400 0x80>, <0xCE0 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
@@ -795,11 +810,11 @@
};
i2c8: i2c-bus@480 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x480 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x480 0x80>, <0xD00 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
@@ -810,11 +825,11 @@
};
i2c9: i2c-bus@500 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x500 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x500 0x80>, <0xD20 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
@@ -825,11 +840,11 @@
};
i2c10: i2c-bus@580 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x580 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x580 0x80>, <0xD40 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
@@ -840,11 +855,11 @@
};
i2c11: i2c-bus@600 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x600 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x600 0x80>, <0xD60 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
@@ -855,11 +870,11 @@
};
i2c12: i2c-bus@680 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x680 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x680 0x80>, <0xD80 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
@@ -870,11 +885,11 @@
};
i2c13: i2c-bus@700 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x700 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x700 0x80>, <0xDA0 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
@@ -885,11 +900,11 @@
};
i2c14: i2c-bus@780 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x780 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x780 0x80>, <0xDC0 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
@@ -900,11 +915,11 @@
};
i2c15: i2c-bus@800 {
+ compatible = "aspeed,ast2600-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
#interrupt-cells = <1>;
- reg = <0x800 0x80>;
- compatible = "aspeed,ast2600-i2c-bus";
+ reg = <0x800 0x80>, <0xDE0 0x20>;
clocks = <&syscon ASPEED_CLK_APB2>;
resets = <&syscon ASPEED_RESET_I2C>;
interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
@@ -914,3 +929,74 @@
status = "disabled";
};
};
+
+&i2csec {
+
+ i2c_gr0: i2c-global-regs@0 {
+ compatible = "aspeed,ast2600-i2c-global", "syscon";
+ reg = <0x0 0x20>;
+ clocks = <&syscon ASPEED_CLK_APB2>;
+ status = "disabled";
+ };
+
+ i2c16: i2c-bus@80 {
+ compatible = "aspeed,ast2600-i2c-bus";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #interrupt-cells = <1>;
+ reg = <0x80 0x80>, <0xC00 0x20>;
+ clocks = <&syscon ASPEED_CLK_APB2>;
+ interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
+ bus-frequency = <100000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2c1_default>;
+ buff-mode;
+ status = "disabled";
+ };
+
+ i2c17: i2c-bus@100 {
+ compatible = "aspeed,ast2600-i2c-bus";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #interrupt-cells = <1>;
+ reg = <0x100 0x80>, <0xC20 0x20>;
+ clocks = <&syscon ASPEED_CLK_APB2>;
+ interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
+ bus-frequency = <100000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2c2_default>;
+ buff-mode;
+ status = "disabled";
+ };
+
+ i2c18: i2c-bus@180 {
+ compatible = "aspeed,ast2600-i2c-bus";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #interrupt-cells = <1>;
+ reg = <0x180 0x80>, <0xC40 0x20>;
+ clocks = <&syscon ASPEED_CLK_APB2>;
+ interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
+ bus-frequency = <100000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2c3_default>;
+ buff-mode;
+ status = "disabled";
+ };
+
+ i2c19: i2c-bus@200 {
+ compatible = "aspeed,ast2600-i2c-bus";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #interrupt-cells = <1>;
+ reg = <0x200 0x80>, <0xC60 0x20>;
+ clocks = <&syscon ASPEED_CLK_APB2>;
+ interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+ bus-frequency = <100000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2c4_default>;
+ buff-mode;
+ status = "disabled";
+ };
+
+};
--
2.17.1