[PATCH] ARM: i.MX8M: move early_clock_init out of power_init_board
Sascha Hauer
sha at pengutronix.de
Thu May 25 00:31:09 PDT 2023
On Tue, May 23, 2023 at 11:53:30AM +0200, Ahmad Fatoum wrote:
> With increased number of i.MX8M-based designs, boards now tend to come
> with PMIC that are preconfigured to supply the correct voltages at POR.
>
> On such boards, barebox need not do any I2C configuration, but clocks
> need to be configured anyway, which is usually done as part of the I2C
> setup in the board's power_init_board. To save developers copy-pasting
> code the hassle of debugging DDR training only to find out they
> shouldn't have deleted imx8m*_early_clock_init() when they removed
> power_init_board(), let's move it out of this function.
>
> This means we now setup clocks before pinmuxing I2C, but still, this
> should not result in any functional change.
>
> Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
> ---
> arch/arm/boards/innocomm-imx8mm-wb15/lowlevel.c | 3 ++-
> arch/arm/boards/nxp-imx8mm-evk/lowlevel.c | 2 +-
> arch/arm/boards/nxp-imx8mn-evk/lowlevel.c | 3 ++-
> arch/arm/boards/nxp-imx8mp-evk/lowlevel.c | 3 ++-
> arch/arm/boards/polyhex-debix/lowlevel.c | 3 ++-
> arch/arm/boards/tqma8mpxl/lowlevel.c | 3 ++-
> arch/arm/boards/variscite-dt8mcustomboard-imx8mp/lowlevel.c | 3 ++-
> 7 files changed, 13 insertions(+), 7 deletions(-)
Applied, thanks
Sascha
>
> diff --git a/arch/arm/boards/innocomm-imx8mm-wb15/lowlevel.c b/arch/arm/boards/innocomm-imx8mm-wb15/lowlevel.c
> index 2f6061f0e263..cf7f744552b2 100644
> --- a/arch/arm/boards/innocomm-imx8mm-wb15/lowlevel.c
> +++ b/arch/arm/boards/innocomm-imx8mm-wb15/lowlevel.c
> @@ -64,7 +64,6 @@ void innocomm_wb15_power_init_board(void)
> imx8mm_setup_pad(IMX8MM_PAD_I2C1_SCL_I2C1_SCL);
> imx8mm_setup_pad(IMX8MM_PAD_I2C1_SDA_I2C1_SDA);
>
> - imx8mm_early_clock_init();
> imx8m_ccgr_clock_enable(IMX8M_CCM_CCGR_I2C1);
>
> i2c = imx8m_i2c_early_init(IOMEM(MX8MQ_I2C1_BASE_ADDR));
> @@ -87,6 +86,8 @@ ENTRY_FUNCTION(start_innocomm_wb15_evk, r0, r1, r2)
> * will then jump to DRAM in EL2
> */
> if (current_el() == 3) {
> + imx8mm_early_clock_init();
> +
> innocomm_wb15_power_init_board();
>
> imx8mm_ddr_init(&innocomm_wb15_dram_timing, DRAM_TYPE_LPDDR4);
> diff --git a/arch/arm/boards/nxp-imx8mm-evk/lowlevel.c b/arch/arm/boards/nxp-imx8mm-evk/lowlevel.c
> index ee18fe72b40e..881d8285b60e 100644
> --- a/arch/arm/boards/nxp-imx8mm-evk/lowlevel.c
> +++ b/arch/arm/boards/nxp-imx8mm-evk/lowlevel.c
> @@ -83,7 +83,6 @@ static void power_init_board(void)
> imx8mm_setup_pad(IMX8MM_PAD_I2C1_SCL_I2C1_SCL);
> imx8mm_setup_pad(IMX8MM_PAD_I2C1_SDA_I2C1_SDA);
>
> - imx8mm_early_clock_init();
> imx8m_ccgr_clock_enable(IMX8M_CCM_CCGR_I2C1);
>
> i2c = imx8m_i2c_early_init(IOMEM(MX8MQ_I2C1_BASE_ADDR));
> @@ -106,6 +105,7 @@ static void start_atf(void)
> if (current_el() != 3)
> return;
>
> + imx8mm_early_clock_init();
> power_init_board();
> imx8mm_ddr_init(&imx8mm_evk_dram_timing, DRAM_TYPE_LPDDR4);
>
> diff --git a/arch/arm/boards/nxp-imx8mn-evk/lowlevel.c b/arch/arm/boards/nxp-imx8mn-evk/lowlevel.c
> index 23504ee96551..a1a501b1d962 100644
> --- a/arch/arm/boards/nxp-imx8mn-evk/lowlevel.c
> +++ b/arch/arm/boards/nxp-imx8mn-evk/lowlevel.c
> @@ -92,10 +92,11 @@ static void start_atf(void)
> if (current_el() != 3)
> return;
>
> + imx8mn_early_clock_init();
> +
> imx8mn_setup_pad(IMX8MN_PAD_I2C1_SCL__I2C1_SCL);
> imx8mn_setup_pad(IMX8MN_PAD_I2C1_SDA__I2C1_SDA);
>
> - imx8mn_early_clock_init();
> imx8m_ccgr_clock_enable(IMX8M_CCM_CCGR_I2C1);
>
> i2c = imx8m_i2c_early_init(IOMEM(MX8MN_I2C1_BASE_ADDR));
> diff --git a/arch/arm/boards/nxp-imx8mp-evk/lowlevel.c b/arch/arm/boards/nxp-imx8mp-evk/lowlevel.c
> index c129b5e7fa43..969947d2ec4e 100644
> --- a/arch/arm/boards/nxp-imx8mp-evk/lowlevel.c
> +++ b/arch/arm/boards/nxp-imx8mp-evk/lowlevel.c
> @@ -78,7 +78,6 @@ static void power_init_board(void)
> imx8mp_setup_pad(MX8MP_PAD_I2C1_SCL__I2C1_SCL | I2C_PAD_CTRL);
> imx8mp_setup_pad(MX8MP_PAD_I2C1_SDA__I2C1_SDA | I2C_PAD_CTRL);
>
> - imx8mp_early_clock_init();
> imx8m_ccgr_clock_enable(IMX8M_CCM_CCGR_I2C1);
>
> i2c = imx8m_i2c_early_init(IOMEM(MX8MP_I2C1_BASE_ADDR));
> @@ -98,6 +97,8 @@ static void start_atf(void)
> if (current_el() != 3)
> return;
>
> + imx8mp_early_clock_init();
> +
> power_init_board();
>
> imx8mp_ddr_init(&imx8mp_evk_dram_timing, DRAM_TYPE_LPDDR4);
> diff --git a/arch/arm/boards/polyhex-debix/lowlevel.c b/arch/arm/boards/polyhex-debix/lowlevel.c
> index 1c8be39559f7..c4feb30108c8 100644
> --- a/arch/arm/boards/polyhex-debix/lowlevel.c
> +++ b/arch/arm/boards/polyhex-debix/lowlevel.c
> @@ -73,7 +73,6 @@ static void power_init_board(void)
> imx8mp_setup_pad(MX8MP_PAD_I2C1_SCL__I2C1_SCL | I2C_PAD_CTRL);
> imx8mp_setup_pad(MX8MP_PAD_I2C1_SDA__I2C1_SDA | I2C_PAD_CTRL);
>
> - imx8mp_early_clock_init();
> imx8m_ccgr_clock_enable(IMX8M_CCM_CCGR_I2C1);
>
> i2c = imx8m_i2c_early_init(IOMEM(MX8MP_I2C1_BASE_ADDR));
> @@ -93,6 +92,8 @@ static void start_atf(void)
> if (current_el() != 3)
> return;
>
> + imx8mp_early_clock_init();
> +
> power_init_board();
>
> imx8mp_ddr_init(&imx8mp_debix_dram_timing, DRAM_TYPE_LPDDR4);
> diff --git a/arch/arm/boards/tqma8mpxl/lowlevel.c b/arch/arm/boards/tqma8mpxl/lowlevel.c
> index 793bcba3ca36..e0a0f17d3aa4 100644
> --- a/arch/arm/boards/tqma8mpxl/lowlevel.c
> +++ b/arch/arm/boards/tqma8mpxl/lowlevel.c
> @@ -74,7 +74,6 @@ static void power_init_board(void)
> imx8mp_setup_pad(MX8MP_PAD_I2C1_SCL__I2C1_SCL | I2C_PAD_CTRL);
> imx8mp_setup_pad(MX8MP_PAD_I2C1_SDA__I2C1_SDA | I2C_PAD_CTRL);
>
> - imx8mp_early_clock_init();
> imx8m_ccgr_clock_enable(IMX8M_CCM_CCGR_I2C1);
>
> i2c = imx8m_i2c_early_init(IOMEM(MX8MP_I2C1_BASE_ADDR));
> @@ -91,6 +90,8 @@ static __noreturn noinline void tqma8mpxl_start(void)
> if (current_el() == 3) {
> extern struct dram_timing_info dram_timing_2gb_no_ecc;
>
> + imx8mp_early_clock_init();
> +
> power_init_board();
>
> imx8mp_ddr_init(&dram_timing_2gb_no_ecc, DRAM_TYPE_LPDDR4);
> diff --git a/arch/arm/boards/variscite-dt8mcustomboard-imx8mp/lowlevel.c b/arch/arm/boards/variscite-dt8mcustomboard-imx8mp/lowlevel.c
> index 92325fd20e29..c9907ebf0a35 100644
> --- a/arch/arm/boards/variscite-dt8mcustomboard-imx8mp/lowlevel.c
> +++ b/arch/arm/boards/variscite-dt8mcustomboard-imx8mp/lowlevel.c
> @@ -70,7 +70,6 @@ static void power_init_board(void)
> imx8mp_setup_pad(MX8MP_PAD_I2C1_SCL__I2C1_SCL | I2C_PAD_CTRL);
> imx8mp_setup_pad(MX8MP_PAD_I2C1_SDA__I2C1_SDA | I2C_PAD_CTRL);
>
> - imx8mm_early_clock_init();
> imx8m_ccgr_clock_enable(IMX8M_CCM_CCGR_I2C1);
>
> i2c = imx8m_i2c_early_init(IOMEM(MX8MP_I2C1_BASE_ADDR));
> @@ -90,6 +89,8 @@ static void start_atf(void)
> if (current_el() != 3)
> return;
>
> + imx8mm_early_clock_init();
> +
> power_init_board();
>
> imx8mp_ddr_init(&var_dart_imx8mp_dram_timing, DRAM_TYPE_LPDDR4);
> --
> 2.39.2
>
>
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list