[U-Boot] [PATCH 6/8] rockchip: rk3188: Switch to new i2c IP blocks

Simon Glass sjg at chromium.org
Fri Mar 24 03:28:08 UTC 2017


Hi Heiko,

On 20 March 2017 at 05:40, Heiko Stuebner <heiko at sntech.de> wrote:
> The rk3066/rk3188 introduced new i2c IP blocks but kept the old ones
> around just in case. The default also points to these old controllers.
>
> The "new" blocks proved stable and nobody ever used the old ones anywhere,
> not in the kernel and not in U-Boot, so to be able to reuse the already
> existing driver make the rk3188 switch to the new ones in U-Boot as well.
>
> Signed-off-by: Heiko Stuebner <heiko at sntech.de>
> ---
>  arch/arm/mach-rockchip/rk3188-board-spl.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
> diff --git a/arch/arm/mach-rockchip/rk3188-board-spl.c b/arch/arm/mach-rockchip/rk3188-board-spl.c
> index affd959f86..14847a7b1b 100644
> --- a/arch/arm/mach-rockchip/rk3188-board-spl.c
> +++ b/arch/arm/mach-rockchip/rk3188-board-spl.c
> @@ -17,6 +17,7 @@
>  #include <asm/io.h>
>  #include <asm/arch/bootrom.h>
>  #include <asm/arch/clock.h>
> +#include <asm/arch/grf_rk3188.h>
>  #include <asm/arch/hardware.h>
>  #include <asm/arch/periph.h>
>  #include <asm/arch/pmu_rk3188.h>
> @@ -102,6 +103,7 @@ void board_init_f(ulong dummy)
>  {
>         struct udevice *pinctrl, *dev;
>         struct rk3188_pmu *pmu;
> +       struct rk3188_grf *grf;
>         int ret;
>
>         /* Example code showing how to enable the debug UART on RK3188 */
> @@ -154,6 +156,25 @@ void board_init_f(ulong dummy)
>                 error("pmu syscon returned %ld\n", PTR_ERR(pmu));
>         SAVE_SP_ADDR = readl(&pmu->sys_reg[2]);
>
> +       /* init common grf settings */
> +       grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
> +       if (IS_ERR(grf)) {
> +               error("grf syscon returned %ld\n", PTR_ERR(grf));
> +       } else {
> +               /* make i2c controllers use the new IP */
> +               rk_clrsetreg(&grf->soc_con1,
> +                       RKI2C4_SEL_MASK << RKI2C4_SEL_SHIFT |
> +                       RKI2C3_SEL_MASK << RKI2C3_SEL_SHIFT |
> +                       RKI2C2_SEL_MASK << RKI2C2_SEL_SHIFT |
> +                       RKI2C1_SEL_MASK << RKI2C1_SEL_SHIFT |
> +                       RKI2C0_SEL_MASK << RKI2C0_SEL_SHIFT,
> +                       RKI2C4_SEL_MASK << RKI2C4_SEL_SHIFT |
> +                       RKI2C3_SEL_MASK << RKI2C3_SEL_SHIFT |
> +                       RKI2C2_SEL_MASK << RKI2C2_SEL_SHIFT |
> +                       RKI2C1_SEL_MASK << RKI2C1_SEL_SHIFT |
> +                       RKI2C0_SEL_MASK << RKI2C0_SEL_SHIFT);
> +       }

Can you move this to the pinctrl driver?

> +
>         ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
>         if (ret) {
>                 debug("Pinctrl init failed: %d\n", ret);
> --
> 2.11.0
>

Regards,
Simon


More information about the U-Boot mailing list