[U-Boot] [PATCH] hikey: Take peripherals out of reset during board init

Peter Griffin peter.griffin at linaro.org
Tue Mar 19 11:29:01 UTC 2019


Hi Mani,

This looks like a bug in the Linux kernel. The kernel driver should be
correctly
handling the reset lines of the I2C or SPI peripheral rather than replying
on
the bootloader to have already taken it out of reset.

Peter.

On Fri, 8 Mar 2019 at 08:57, Manivannan Sadhasivam <
manivannan.sadhasivam at linaro.org> wrote:

> Peripherals like I2C and SPI needs to be taken out of reset during
> board init for functioning properly. Hence, add `hi6220_periph_reset`
> function for doing the same. For instance without this function, I2C
> will fail like below while booting linux:
>
> [    0.608033] i2c_designware f7100000.i2c: Unknown Synopsys component
> type:
> 0x00000000
> [    0.621378] i2c_designware f7101000.i2c: Unknown Synopsys component
> type:
> 0x00000000
> [    0.633818] i2c_designware f7102000.i2c: Unknown Synopsys component
> type:
> 0x00000000
>
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
> ---
>  board/hisilicon/hikey/hikey.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
>
> diff --git a/board/hisilicon/hikey/hikey.c b/board/hisilicon/hikey/hikey.c
> index 940ae82c45b..f8b8c372bfd 100644
> --- a/board/hisilicon/hikey/hikey.c
> +++ b/board/hisilicon/hikey/hikey.c
> @@ -364,6 +364,20 @@ static void hi6220_pmussi_init(void)
>         gpio_direction_output(0, 1);
>  }
>
> +static void hi6220_periph_reset(void)
> +{
> +       u32 data, bits;
> +
> +       /* Bring I2C0/I2C1/I2C2/SPI0 out of reset */
> +       bits = PERI_RST3_I2C0 | PERI_RST3_I2C1 | PERI_RST3_I2C2 |
> PERI_RST3_SSP;
> +       writel(bits, &peri_sc->rst3_dis);
> +
> +       /* Wait until the peripherals are out of reset */
> +       do {
> +               data = readl(&peri_sc->rst3_dis);
> +       } while (data & bits);
> +}
> +
>  int misc_init_r(void)
>  {
>         return 0;
> @@ -371,6 +385,8 @@ int misc_init_r(void)
>
>  int board_init(void)
>  {
> +       hi6220_periph_reset();
> +
>         return 0;
>  }
>
> --
> 2.17.1
>
>


More information about the U-Boot mailing list