Hi Vikas On 01/17/2018 08:55 PM, Vikas Manocha wrote: > Hi Patrice, > > On 01/17/2018 12:46 AM, patrice.chot...@st.com wrote: >> From: Patrice Chotard <patrice.chot...@st.com> >> >> Move SYSCFG clock setup into configure_clocks() instead of calling >> clock_setup() from drivers. > > It is in board configuration.
Yes, my comment is badly formulated. The idea is to remove clock_setup() from clock driver. > >> Move the RMII setup from board_early_init_f() to board_init() >> to insure that RMII bit is set only when clock driver is initialized. >> >> Signed-off-by: Patrice Chotard <patrice.chot...@st.com> >> --- >> arch/arm/include/asm/arch-stm32f7/stm32_periph.h | 1 - >> board/st/stm32f746-disco/stm32f746-disco.c | 19 ++++++------------- >> drivers/clk/clk_stm32f.c | 10 ++++------ >> 3 files changed, 10 insertions(+), 20 deletions(-) >> >> diff --git a/arch/arm/include/asm/arch-stm32f7/stm32_periph.h >> b/arch/arm/include/asm/arch-stm32f7/stm32_periph.h >> index 13f9c9b..7b8f66a 100644 >> --- a/arch/arm/include/asm/arch-stm32f7/stm32_periph.h >> +++ b/arch/arm/include/asm/arch-stm32f7/stm32_periph.h >> @@ -21,7 +21,6 @@ enum periph_id { >> }; >> >> enum periph_clock { >> - SYSCFG_CLOCK_CFG, >> TIMER2_CLOCK_CFG, >> }; >> >> diff --git a/board/st/stm32f746-disco/stm32f746-disco.c >> b/board/st/stm32f746-disco/stm32f746-disco.c >> index 58a5ef0..8da7028 100644 >> --- a/board/st/stm32f746-disco/stm32f746-disco.c >> +++ b/board/st/stm32f746-disco/stm32f746-disco.c >> @@ -69,23 +69,10 @@ int dram_init_banksize(void) >> return 0; >> } >> >> -#ifdef CONFIG_ETH_DESIGNWARE >> -static int stmmac_setup(void) >> -{ >> - clock_setup(SYSCFG_CLOCK_CFG); >> - /* Set >RMII mode */ >> - STM32_SYSCFG->pmc |= SYSCFG_PMC_MII_RMII_SEL; >> - >> - return 0; >> -} >> - >> int board_early_init_f(void) >> { >> - stmmac_setup(); >> - >> return 0; >> } >> -#endif >> >> #ifdef CONFIG_SPL_BUILD >> #ifdef CONFIG_SPL_OS_BOOT >> @@ -162,5 +149,11 @@ int board_late_init(void) >> int board_init(void) >> { >> gd->bd->bi_boot_params = gd->bd->bi_dram[0].start + 0x100; >> + >> +#ifdef CONFIG_ETH_DESIGNWARE >> + /* Set >RMII mode */ >> + STM32_SYSCFG->pmc |= SYSCFG_PMC_MII_RMII_SEL; >> +#endif >> + >> return 0; >> } >> diff --git a/drivers/clk/clk_stm32f.c b/drivers/clk/clk_stm32f.c >> index d0c7a90..1ae5b70 100644 >> --- a/drivers/clk/clk_stm32f.c >> +++ b/drivers/clk/clk_stm32f.c >> @@ -67,8 +67,6 @@ >> #define RCC_DCKCFGRX_SDMMC1SEL BIT(28) >> #define RCC_DCKCFGR2_SDMMC2SEL BIT(29) >> >> -#define RCC_APB2ENR_SAI1EN BIT(22) >> - >> /* >> * RCC AHB1ENR specific definitions >> */ >> @@ -86,9 +84,9 @@ >> * RCC APB2ENR specific definitions >> */ >> #define RCC_APB2ENR_SYSCFGEN BIT(14) >> +#define RCC_APB2ENR_SAI1EN BIT(22) >> >> enum periph_clock { >> - SYSCFG_CLOCK_CFG, >> TIMER2_CLOCK_CFG, >> }; >> >> @@ -227,6 +225,9 @@ static int configure_clocks(struct udevice *dev) >> /* gate the SAI clock, needed for MMC 1&2 clocks */ >> setbits_le32(®s->apb2enr, RCC_APB2ENR_SAI1EN); >> >> + /* gate the SYSCFG clock, needed to set RMII ethernet interface */ > > RMII interface only required for f746 disco board. > >> + setbits_le32(®s->apb2enr, RCC_APB2ENR_SYSCFGEN); > > RMII & Syscfg is board specific requirement, here it will configure it for > all stm32f devices. You are right, i will update this. As it is currently only needed for ethernet, i will add the CONFIG_ETH_DESIGNWARE flag around. For information, i will add new stm32f429-evaluation board (already supported in kernel) which provide ethernet connection. Thanks for reviewing Patrice > > Cheers, > Vikas > >> + >> return 0; >> } >> >> @@ -352,9 +353,6 @@ static int stm32_clk_enable(struct clk *clk) >> void clock_setup(int peripheral) >> { >> switch (peripheral) { >> - case SYSCFG_CLOCK_CFG: >> - setbits_le32(&STM32_RCC->apb2enr, RCC_APB2ENR_SYSCFGEN); >> - break; >> case TIMER2_CLOCK_CFG: >> setbits_le32(&STM32_RCC->apb1enr, RCC_APB1ENR_TIM2EN); >> break; >> _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot