[U-Boot] [PATCH] arm: mvebu: move i2c slave disable to generic SPL code

Baruch Siach baruch at tkos.co.il
Mon May 28 08:22:50 UTC 2018


Hi Chris,

On Mon, May 28, 2018 at 08:11:39PM +1200, Chris Packham wrote:
> On Mon, May 28, 2018 at 3:27 AM Baruch Siach <baruch at tkos.co.il> wrote:
> > The hidden i2c slave that interferes the i2c bus is not board specific.
> > All Armada 38x SoCs are affected. Move the code disabling this slave to
> > generic code to make it work on all affected hardware.
> 
> I can't find a definition of this but the register seems to work for
> kirkwood as well (not surprising since it's probably a common IP block). Is
> there any chance we can find a home for this that's available to boards
> that don't use SPL?

This workaround is Armada 38x specific. Are you aware of any 38x SoC based 
system that does not use SPL?

As far as I can see 38x support requires SPL. CONFIG_ARMADA_38X selects 
CONFIG_ARMADA_32BIT that in turn selects CONFIG_SPL_DM. CONFIG_SPL_DM depends 
on CONFIG_SPL.

baruch

> > Cc: Marek BehĂșn <marek.behun at nic.cz>
> > Cc: Rabeeh Khoury <rabeeh at solid-run.com>
> > Signed-off-by: Baruch Siach <baruch at tkos.co.il>
> > ---
> >   arch/arm/mach-mvebu/spl.c                | 16 ++++++++++++++++
> >   board/CZ.NIC/turris_omnia/turris_omnia.c |  9 ---------
> >   2 files changed, 16 insertions(+), 9 deletions(-)
> 
> > diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
> > index 50b24f5760b7..cbd900fee5d1 100644
> > --- a/arch/arm/mach-mvebu/spl.c
> > +++ b/arch/arm/mach-mvebu/spl.c
> > @@ -8,10 +8,13 @@
> >   #include <debug_uart.h>
> >   #include <fdtdec.h>
> >   #include <spl.h>
> > +#include <linux/bitops.h>
> >   #include <asm/io.h>
> >   #include <asm/arch/cpu.h>
> >   #include <asm/arch/soc.h>
> 
> > +#define MVTWSI_ARMADA_DEBUG_REG        0x8c
> > +
> >   static u32 get_boot_device(void)
> >   {
> >          u32 val;
> > @@ -69,10 +72,23 @@ u32 spl_boot_device(void)
> >          return get_boot_device();
> >   }
> 
> > +static void disable_i2c_slave(void)
> > +{
> > +       u32 i2c_debug_reg;
> > +
> > +       /* Disable I2C debug mode blocking 0x64 I2C address */
> > +       i2c_debug_reg = readl(MVEBU_TWSI_BASE + MVTWSI_ARMADA_DEBUG_REG);
> > +       i2c_debug_reg &= ~BIT(18);
> > +       writel(i2c_debug_reg, MVEBU_TWSI_BASE + MVTWSI_ARMADA_DEBUG_REG);
> > +}
> > +
> >   void board_init_f(ulong dummy)
> >   {
> >          int ret;
> 
> > +       if (IS_ENABLED(CONFIG_ARMADA_38X))
> > +               disable_i2c_slave();
> > +
> >          /*
> >           * Pin muxing needs to be done before UART output, since
> >           * on A38x the UART pins need some re-muxing for output
> > diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c
> b/board/CZ.NIC/turris_omnia/turris_omnia.c
> > index da663cf1bb0c..044c959d1b13 100644
> > --- a/board/CZ.NIC/turris_omnia/turris_omnia.c
> > +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
> > @@ -50,8 +50,6 @@ DECLARE_GLOBAL_DATA_PTR;
> >   #define OMNIA_ATSHA204_OTP_MAC0                3
> >   #define OMNIA_ATSHA204_OTP_MAC1                4
> 
> > -#define MVTWSI_ARMADA_DEBUG_REG                0x8c
> > -
> >   /*
> >    * Those values and defines are taken from the Marvell U-Boot version
> >    * "u-boot-2013.01-2014_T3.0"
> > @@ -297,8 +295,6 @@ static int set_regdomain(void)
> 
> >   int board_early_init_f(void)
> >   {
> > -       u32 i2c_debug_reg;
> > -
> >          /* Configure MPP */
> >          writel(0x11111111, MVEBU_MPP_BASE + 0x00);
> >          writel(0x11111111, MVEBU_MPP_BASE + 0x04);
> > @@ -321,11 +317,6 @@ 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 */
> > -       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);
> > -
> >          return 0;
> >   }

-- 
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -


More information about the U-Boot mailing list