This series adds the I2C nodes for the Marvell Berlin BG2Q SoC. It also
enables I2C0 and I2C2 for the BG2Q DMP.
The Marvell Berlin BG2Q has 4 TWSI compatible with the Synopsys
DesignWare I2C driver.
Antoine Ténart (2):
ARM: dts: berlin: add I2C nodes for BG2Q
ARM: dts: berlin: enable i2c0 and i2c1
arch/arm/boot/dts/berlin2q-marvell-dmp.dts | 8 ++++
arch/arm/boot/dts/berlin2q.dtsi | 72 ++++++++++++++++++++++++++++++
2 files changed, 80 insertions(+)
--
1.9.1
The Marvell Berlin BG2Q has 4 TWSI compatible with the Synopsys
DesignWare I2C driver. Add the corresponding nodes.
The pin-muxing setup is also done here, since there cannot be another
muxing setup if I2C{0,1,2,3} are enabled.
Signed-off-by: Antoine Ténart <[email protected]>
---
arch/arm/boot/dts/berlin2q.dtsi | 72 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+)
diff --git a/arch/arm/boot/dts/berlin2q.dtsi b/arch/arm/boot/dts/berlin2q.dtsi
index 635a16a64cb4..0624868e36e3 100644
--- a/arch/arm/boot/dts/berlin2q.dtsi
+++ b/arch/arm/boot/dts/berlin2q.dtsi
@@ -191,6 +191,32 @@
};
};
+ i2c0: i2c@1400 {
+ compatible = "snps,designware-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x1400 0x100>;
+ interrupt-parent = <&aic>;
+ interrupts = <4>;
+ clocks = <&chip CLKID_CFG>;
+ pinctrl-0 = <&twsi0_pmux>;
+ pinctrl-names = "default";
+ status = "disabled";
+ };
+
+ i2c1: i2c@1800 {
+ compatible = "snps,designware-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x1800 0x100>;
+ interrupt-parent = <&aic>;
+ interrupts = <5>;
+ clocks = <&chip CLKID_CFG>;
+ pinctrl-0 = <&twsi1_pmux>;
+ pinctrl-names = "default";
+ status = "disabled";
+ };
+
timer0: timer@2c00 {
compatible = "snps,dw-apb-timer";
reg = <0x2c00 0x14>;
@@ -301,6 +327,16 @@
reg = <0xea0000 0x400>, <0xdd0170 0x10>;
clocks = <&refclk>;
clock-names = "refclk";
+
+ twsi0_pmux: twsi0-pmux {
+ groups = "G6";
+ function = "twsi0";
+ };
+
+ twsi1_pmux: twsi1-pmux {
+ groups = "G7";
+ function = "twsi1";
+ };
};
apb@fc0000 {
@@ -311,6 +347,32 @@
ranges = <0 0xfc0000 0x10000>;
interrupt-parent = <&sic>;
+ i2c2: i2c@7000 {
+ compatible = "snps,designware-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x7000 0x100>;
+ interrupt-parent = <&sic>;
+ interrupts = <6>;
+ clocks = <&refclk>;
+ pinctrl-0 = <&twsi2_pmux>;
+ pinctrl-names = "default";
+ status = "disabled";
+ };
+
+ i2c3: i2c@8000 {
+ compatible = "snps,designware-i2c";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x8000 0x100>;
+ interrupt-parent = <&sic>;
+ interrupts = <7>;
+ clocks = <&refclk>;
+ pinctrl-0 = <&twsi3_pmux>;
+ pinctrl-names = "default";
+ status = "disabled";
+ };
+
uart0: uart@9000 {
compatible = "snps,dw-apb-uart";
reg = <0x9000 0x100>;
@@ -348,6 +410,16 @@
groups = "GSM14";
function = "uart1";
};
+
+ twsi2_pmux: twsi2-pmux {
+ groups = "GSM13";
+ function = "twsi2";
+ };
+
+ twsi3_pmux: twsi3-pmux {
+ groups = "GSM14";
+ function = "twsi3";
+ };
};
sic: interrupt-controller@e000 {
--
1.9.1
Enable the I2C0 and I2C2 for the Marvell Berlin BG2G DMP. I2C1 and I2C3
are also working on this board, but no devices seemed to be there.
Signed-off-by: Antoine Ténart <[email protected]>
---
arch/arm/boot/dts/berlin2q-marvell-dmp.dts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/berlin2q-marvell-dmp.dts b/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
index 995150f93795..a357ce02a64e 100644
--- a/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
+++ b/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
@@ -34,6 +34,14 @@
status = "okay";
};
+&i2c0 {
+ status = "okay";
+};
+
+&i2c2 {
+ status = "okay";
+};
+
&uart0 {
status = "okay";
};
--
1.9.1
On Tue, Jun 03, 2014 at 09:33:10AM +0200, Antoine T?nart wrote:
> Enable the I2C0 and I2C2 for the Marvell Berlin BG2G DMP. I2C1 and I2C3
> are also working on this board, but no devices seemed to be there.
Hi Antoine
Does this mean that IC0 and I2C2 have devices on them? Could you also
add nodes for the devices?
Andrew
Hi Andrew,
On Tue, Jun 03, 2014 at 10:05:22AM +0200, Andrew Lunn wrote:
> On Tue, Jun 03, 2014 at 09:33:10AM +0200, Antoine T?nart wrote:
> > Enable the I2C0 and I2C2 for the Marvell Berlin BG2G DMP. I2C1 and I2C3
> > are also working on this board, but no devices seemed to be there.
>
> Does this mean that IC0 and I2C2 have devices on them? Could you also
> add nodes for the devices?
No devices I can add for now. I you prefer we can drop this patch, keep
the other one and enable i2c nodes for the BG2Q DMP when they will be
needed.
Antoine
--
Antoine T?nart, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
On Wed, Jun 04, 2014 at 06:48:41PM +0200, Antoine T?nart wrote:
> Hi Andrew,
>
> On Tue, Jun 03, 2014 at 10:05:22AM +0200, Andrew Lunn wrote:
> > On Tue, Jun 03, 2014 at 09:33:10AM +0200, Antoine T?nart wrote:
> > > Enable the I2C0 and I2C2 for the Marvell Berlin BG2G DMP. I2C1 and I2C3
> > > are also working on this board, but no devices seemed to be there.
> >
> > Does this mean that IC0 and I2C2 have devices on them? Could you also
> > add nodes for the devices?
>
> No devices I can add for now. I you prefer we can drop this patch, keep
> the other one and enable i2c nodes for the BG2Q DMP when they will be
> needed.
Hi Antoine
I was just wondering how you tested it, without having any devices?
Is it that the devices on the bus don't have mainline drivers?
I don't see a reason not to commit both. At least it allows i2c-detect
to work and see what is on the bus, even if we cannot drive them.
Thanks
Andrew
On Wed, Jun 04, 2014 at 07:03:40PM +0200, Andrew Lunn wrote:
> On Wed, Jun 04, 2014 at 06:48:41PM +0200, Antoine T?nart wrote:
> >
> > On Tue, Jun 03, 2014 at 10:05:22AM +0200, Andrew Lunn wrote:
> > > On Tue, Jun 03, 2014 at 09:33:10AM +0200, Antoine T?nart wrote:
> > > > Enable the I2C0 and I2C2 for the Marvell Berlin BG2G DMP. I2C1 and I2C3
> > > > are also working on this board, but no devices seemed to be there.
> > >
> > > Does this mean that IC0 and I2C2 have devices on them? Could you also
> > > add nodes for the devices?
> >
> > No devices I can add for now. I you prefer we can drop this patch, keep
> > the other one and enable i2c nodes for the BG2Q DMP when they will be
> > needed.
>
> I was just wondering how you tested it, without having any devices?
I tested with the i2ctools. I could see one device on each bus at the
address it should be. I also tested the pin muxing configurations.
I don't have lots of information on these I2C buses, at least my test
results match what I know.
> Is it that the devices on the bus don't have mainline drivers?
Not with I2C support.
Antoine
--
Antoine T?nart, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
On 06/03/2014 09:33 AM, Antoine Ténart wrote:
> The Marvell Berlin BG2Q has 4 TWSI compatible with the Synopsys
> DesignWare I2C driver. Add the corresponding nodes.
>
> The pin-muxing setup is also done here, since there cannot be another
> muxing setup if I2C{0,1,2,3} are enabled.
>
> Signed-off-by: Antoine Ténart <[email protected]>
Applied to berlin/dt.
Thanks!
> ---
> arch/arm/boot/dts/berlin2q.dtsi | 72 +++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 72 insertions(+)
>
> diff --git a/arch/arm/boot/dts/berlin2q.dtsi b/arch/arm/boot/dts/berlin2q.dtsi
> index 635a16a64cb4..0624868e36e3 100644
> --- a/arch/arm/boot/dts/berlin2q.dtsi
> +++ b/arch/arm/boot/dts/berlin2q.dtsi
> @@ -191,6 +191,32 @@
> };
> };
>
> + i2c0: i2c@1400 {
> + compatible = "snps,designware-i2c";
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <0x1400 0x100>;
> + interrupt-parent = <&aic>;
> + interrupts = <4>;
> + clocks = <&chip CLKID_CFG>;
> + pinctrl-0 = <&twsi0_pmux>;
> + pinctrl-names = "default";
> + status = "disabled";
> + };
> +
> + i2c1: i2c@1800 {
> + compatible = "snps,designware-i2c";
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <0x1800 0x100>;
> + interrupt-parent = <&aic>;
> + interrupts = <5>;
> + clocks = <&chip CLKID_CFG>;
> + pinctrl-0 = <&twsi1_pmux>;
> + pinctrl-names = "default";
> + status = "disabled";
> + };
> +
> timer0: timer@2c00 {
> compatible = "snps,dw-apb-timer";
> reg = <0x2c00 0x14>;
> @@ -301,6 +327,16 @@
> reg = <0xea0000 0x400>, <0xdd0170 0x10>;
> clocks = <&refclk>;
> clock-names = "refclk";
> +
> + twsi0_pmux: twsi0-pmux {
> + groups = "G6";
> + function = "twsi0";
> + };
> +
> + twsi1_pmux: twsi1-pmux {
> + groups = "G7";
> + function = "twsi1";
> + };
> };
>
> apb@fc0000 {
> @@ -311,6 +347,32 @@
> ranges = <0 0xfc0000 0x10000>;
> interrupt-parent = <&sic>;
>
> + i2c2: i2c@7000 {
> + compatible = "snps,designware-i2c";
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <0x7000 0x100>;
> + interrupt-parent = <&sic>;
> + interrupts = <6>;
> + clocks = <&refclk>;
> + pinctrl-0 = <&twsi2_pmux>;
> + pinctrl-names = "default";
> + status = "disabled";
> + };
> +
> + i2c3: i2c@8000 {
> + compatible = "snps,designware-i2c";
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <0x8000 0x100>;
> + interrupt-parent = <&sic>;
> + interrupts = <7>;
> + clocks = <&refclk>;
> + pinctrl-0 = <&twsi3_pmux>;
> + pinctrl-names = "default";
> + status = "disabled";
> + };
> +
> uart0: uart@9000 {
> compatible = "snps,dw-apb-uart";
> reg = <0x9000 0x100>;
> @@ -348,6 +410,16 @@
> groups = "GSM14";
> function = "uart1";
> };
> +
> + twsi2_pmux: twsi2-pmux {
> + groups = "GSM13";
> + function = "twsi2";
> + };
> +
> + twsi3_pmux: twsi3-pmux {
> + groups = "GSM14";
> + function = "twsi3";
> + };
> };
>
> sic: interrupt-controller@e000 {
>
On 06/03/2014 09:33 AM, Antoine Ténart wrote:
> Enable the I2C0 and I2C2 for the Marvell Berlin BG2G DMP. I2C1 and I2C3
> are also working on this board, but no devices seemed to be there.
>
> Signed-off-by: Antoine Ténart <[email protected]>
Applied to berlin/dt with Andrew's Reviewed-by.
Thanks!
> ---
> arch/arm/boot/dts/berlin2q-marvell-dmp.dts | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/arch/arm/boot/dts/berlin2q-marvell-dmp.dts b/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
> index 995150f93795..a357ce02a64e 100644
> --- a/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
> +++ b/arch/arm/boot/dts/berlin2q-marvell-dmp.dts
> @@ -34,6 +34,14 @@
> status = "okay";
> };
>
> +&i2c0 {
> + status = "okay";
> +};
> +
> +&i2c2 {
> + status = "okay";
> +};
> +
> &uart0 {
> status = "okay";
> };
>