mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Sascha Hauer <sha@pengutronix.de>
To: Ahmad Fatoum <a.fatoum@pengutronix.de>
Cc: barebox@lists.infradead.org, bst@pengutronix.de
Subject: Re: [PATCH] ARM: i.MX8M: move early_clock_init out of power_init_board
Date: Thu, 25 May 2023 09:31:09 +0200	[thread overview]
Message-ID: <20230525073109.GM17518@pengutronix.de> (raw)
In-Reply-To: <20230523095330.3475712-1-a.fatoum@pengutronix.de>

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@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 |



      reply	other threads:[~2023-05-25  7:32 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-23  9:53 Ahmad Fatoum
2023-05-25  7:31 ` Sascha Hauer [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230525073109.GM17518@pengutronix.de \
    --to=sha@pengutronix.de \
    --cc=a.fatoum@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=bst@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox