All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v4 1/2] i2c: mvtwsi: disable i2c slave on Armada 38x
@ 2018-06-07  9:38 Baruch Siach
  2018-06-07  9:38 ` [U-Boot] [PATCH v4 2/2] mvebu: turris_omnia: add note about i2c slave disable Baruch Siach
  2018-06-08 13:56 ` [U-Boot] [PATCH v4 1/2] i2c: mvtwsi: disable i2c slave on Armada 38x Heiko Schocher
  0 siblings, 2 replies; 4+ messages in thread
From: Baruch Siach @ 2018-06-07  9:38 UTC (permalink / raw)
  To: u-boot

Equivalent code that disables the hidden i2c0 slave already exists in
the Turris Omnia platform specific code. But this hidden i2c0 slave that
interferes the i2c bus is not board specific. Armada 38x SoCs and at
least some Kirkwood variants are affected as well. Add code to disable
this slave to the i2c bus driver to make it work on all affected
hardware.

Use the bind callback because we want this to always run at boot,
regardless of whether U-Boot uses the i2c bus.

Cc: Rabeeh Khoury <rabeeh@solid-run.com>
Cc: Chris Packham <judge.packham@gmail.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Reviewed-by: Heiko Schocher <hs@denx.de>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
v4:
  * Add dummy 'debug' field to sunxi instead of platform #ifdef around
    the 'debug' field access (Stefan Roese, Heiko Schocher)

v3:
  * Fix build for SUNXI (Heiko Schocher)

v2:
  * Use clrbits_le32 (Stefan Roese)

  * Apply to Kirkwood (Chris Packham)

  * Add review tags from Stefan and Heiko
---
 drivers/i2c/mvtwsi.c | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/drivers/i2c/mvtwsi.c b/drivers/i2c/mvtwsi.c
index f9822e56b894..74ac0a4aa789 100644
--- a/drivers/i2c/mvtwsi.c
+++ b/drivers/i2c/mvtwsi.c
@@ -11,6 +11,7 @@
 #include <i2c.h>
 #include <linux/errno.h>
 #include <asm/io.h>
+#include <linux/bitops.h>
 #include <linux/compat.h>
 #ifdef CONFIG_DM_I2C
 #include <dm.h>
@@ -57,6 +58,7 @@ struct  mvtwsi_registers {
 	u32 status;
 	u32 baudrate;
 	u32 soft_reset;
+	u32 debug; /* Dummy field for build compatibility with mvebu */
 };
 
 #else
@@ -70,8 +72,10 @@ struct  mvtwsi_registers {
 		u32 baudrate;	/* When writing */
 	};
 	u32 xtnd_slave_addr;
-	u32 reserved[2];
+	u32 reserved0[2];
 	u32 soft_reset;
+	u32 reserved1[27];
+	u32 debug;
 };
 
 #endif
@@ -795,6 +799,23 @@ static int mvtwsi_i2c_ofdata_to_platdata(struct udevice *bus)
 	return 0;
 }
 
+static void twsi_disable_i2c_slave(struct mvtwsi_registers *twsi)
+{
+	clrbits_le32(&twsi->debug, BIT(18));
+}
+
+static int mvtwsi_i2c_bind(struct udevice *bus)
+{
+	struct mvtwsi_registers *twsi = devfdt_get_addr_ptr(bus);
+
+	/* Disable the hidden slave in i2c0 of these platforms */
+	if ((IS_ENABLED(CONFIG_ARMADA_38X) || IS_ENABLED(CONFIG_KIRKWOOD))
+			&& bus->req_seq == 0)
+		twsi_disable_i2c_slave(twsi);
+
+	return 0;
+}
+
 static int mvtwsi_i2c_probe(struct udevice *bus)
 {
 	struct mvtwsi_i2c_dev *dev = dev_get_priv(bus);
@@ -850,6 +871,7 @@ U_BOOT_DRIVER(i2c_mvtwsi) = {
 	.name = "i2c_mvtwsi",
 	.id = UCLASS_I2C,
 	.of_match = mvtwsi_i2c_ids,
+	.bind = mvtwsi_i2c_bind,
 	.probe = mvtwsi_i2c_probe,
 	.ofdata_to_platdata = mvtwsi_i2c_ofdata_to_platdata,
 	.priv_auto_alloc_size = sizeof(struct mvtwsi_i2c_dev),
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH v4 2/2] mvebu: turris_omnia: add note about i2c slave disable
  2018-06-07  9:38 [U-Boot] [PATCH v4 1/2] i2c: mvtwsi: disable i2c slave on Armada 38x Baruch Siach
@ 2018-06-07  9:38 ` Baruch Siach
  2018-06-08 13:56   ` Heiko Schocher
  2018-06-08 13:56 ` [U-Boot] [PATCH v4 1/2] i2c: mvtwsi: disable i2c slave on Armada 38x Heiko Schocher
  1 sibling, 1 reply; 4+ messages in thread
From: Baruch Siach @ 2018-06-07  9:38 UTC (permalink / raw)
  To: u-boot

Code that disables the i2c slave is now in the mvtwsi i2c driver.
Platform must enable DM_I2C to use that code. Add a comment in the code
as a reminder for the planned DM_I2C migration of Turris Omnia.

Reviewed-by: Heiko Schocher <hs@denx.de>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
v2: Add Reviewed-by from Heiko
---
 board/CZ.NIC/turris_omnia/turris_omnia.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
index da663cf1bb0c..160d30cd795a 100644
--- a/board/CZ.NIC/turris_omnia/turris_omnia.c
+++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
@@ -321,7 +321,11 @@ int board_early_init_f(void)
 	writel(OMNIA_GPP_OUT_ENA_LOW, MVEBU_GPIO0_BASE + 0x04);
 	writel(OMNIA_GPP_OUT_ENA_MID, MVEBU_GPIO1_BASE + 0x04);
 
-	/* Disable I2C debug mode blocking 0x64 I2C address */
+	/*
+	 * Disable I2C debug mode blocking 0x64 I2C address.
+	 * Note: that would be redundant once Turris Omnia migrates to DM_I2C,
+	 * because the mvtwsi driver includes equivalent code.
+	 */
 	i2c_debug_reg = readl(MVEBU_TWSI_BASE + MVTWSI_ARMADA_DEBUG_REG);
 	i2c_debug_reg &= ~(1<<18);
 	writel(i2c_debug_reg, MVEBU_TWSI_BASE + MVTWSI_ARMADA_DEBUG_REG);
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH v4 1/2] i2c: mvtwsi: disable i2c slave on Armada 38x
  2018-06-07  9:38 [U-Boot] [PATCH v4 1/2] i2c: mvtwsi: disable i2c slave on Armada 38x Baruch Siach
  2018-06-07  9:38 ` [U-Boot] [PATCH v4 2/2] mvebu: turris_omnia: add note about i2c slave disable Baruch Siach
@ 2018-06-08 13:56 ` Heiko Schocher
  1 sibling, 0 replies; 4+ messages in thread
From: Heiko Schocher @ 2018-06-08 13:56 UTC (permalink / raw)
  To: u-boot

Hello Baruch,

Am 07.06.2018 um 11:38 schrieb Baruch Siach:
> Equivalent code that disables the hidden i2c0 slave already exists in
> the Turris Omnia platform specific code. But this hidden i2c0 slave that
> interferes the i2c bus is not board specific. Armada 38x SoCs and at
> least some Kirkwood variants are affected as well. Add code to disable
> this slave to the i2c bus driver to make it work on all affected
> hardware.
> 
> Use the bind callback because we want this to always run at boot,
> regardless of whether U-Boot uses the i2c bus.
> 
> Cc: Rabeeh Khoury <rabeeh@solid-run.com>
> Cc: Chris Packham <judge.packham@gmail.com>
> Reviewed-by: Stefan Roese <sr@denx.de>
> Reviewed-by: Heiko Schocher <hs@denx.de>
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> ---
> v4:
>    * Add dummy 'debug' field to sunxi instead of platform #ifdef around
>      the 'debug' field access (Stefan Roese, Heiko Schocher)
> 
> v3:
>    * Fix build for SUNXI (Heiko Schocher)
> 
> v2:
>    * Use clrbits_le32 (Stefan Roese)
> 
>    * Apply to Kirkwood (Chris Packham)
> 
>    * Add review tags from Stefan and Heiko
> ---
>   drivers/i2c/mvtwsi.c | 24 +++++++++++++++++++++++-
>   1 file changed, 23 insertions(+), 1 deletion(-)

Applied to u-boot-i2c.git master

Thanks!

bye,
Heiko
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-52   Fax: +49-8142-66989-80   Email: hs at denx.de

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH v4 2/2] mvebu: turris_omnia: add note about i2c slave disable
  2018-06-07  9:38 ` [U-Boot] [PATCH v4 2/2] mvebu: turris_omnia: add note about i2c slave disable Baruch Siach
@ 2018-06-08 13:56   ` Heiko Schocher
  0 siblings, 0 replies; 4+ messages in thread
From: Heiko Schocher @ 2018-06-08 13:56 UTC (permalink / raw)
  To: u-boot

Hello Baruch,

Am 07.06.2018 um 11:38 schrieb Baruch Siach:
> Code that disables the i2c slave is now in the mvtwsi i2c driver.
> Platform must enable DM_I2C to use that code. Add a comment in the code
> as a reminder for the planned DM_I2C migration of Turris Omnia.
> 
> Reviewed-by: Heiko Schocher <hs@denx.de>
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> ---
> v2: Add Reviewed-by from Heiko
> ---
>   board/CZ.NIC/turris_omnia/turris_omnia.c | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)

Applied to u-boot-i2c.git master

Thanks!

bye,
Heiko
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-52   Fax: +49-8142-66989-80   Email: hs at denx.de

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-06-08 13:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-07  9:38 [U-Boot] [PATCH v4 1/2] i2c: mvtwsi: disable i2c slave on Armada 38x Baruch Siach
2018-06-07  9:38 ` [U-Boot] [PATCH v4 2/2] mvebu: turris_omnia: add note about i2c slave disable Baruch Siach
2018-06-08 13:56   ` Heiko Schocher
2018-06-08 13:56 ` [U-Boot] [PATCH v4 1/2] i2c: mvtwsi: disable i2c slave on Armada 38x Heiko Schocher

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.