[U-Boot] [PATCH] ARM: mxs: Do not reconfigure FEC clock in FEC init

Hector Palacios hector.palacios at digi.com
Mon Oct 14 09:46:41 CEST 2013


Dear Marek,

On 10/13/2013 05:20 PM, Marek Vasut wrote:
> Do not reconfigure the FEC clock during board_eth_init(), otherwise
> the FEC might have stability issues, refuse to autonegotiate link
> entirely or even corrupt packets while indicating correct checksum
> on them. Instead, move the FEC clock init to board_early_init_f(),
> where all the other upstream clock are initialized and also make
> sure there is proper stabilization delay.

Do you have any means to reproduce the problem?
I have seldom seen times when the Ethernet did not work, but it was so infrequent that 
it was impossible to know where it came from or how to reproduce it.


[...]

> diff --git a/board/denx/m28evk/m28evk.c b/board/denx/m28evk/m28evk.c
> index 33d38cf..5065ee8 100644
> --- a/board/denx/m28evk/m28evk.c
> +++ b/board/denx/m28evk/m28evk.c
> @@ -26,6 +26,9 @@ DECLARE_GLOBAL_DATA_PTR;
>    */
>   int board_early_init_f(void)
>   {
> +	struct mxs_clkctrl_regs *clkctrl_regs =
> +		(struct mxs_clkctrl_regs *)MXS_CLKCTRL_BASE;
> +

You may want to wrap these within #ifdef CONFIG_CMD_NET to avoid a warning if not defined.


> diff --git a/board/schulercontrol/sc_sps_1/sc_sps_1.c b/board/schulercontrol/sc_sps_1/sc_sps_1.c
> index 7f0b591..9d3c970 100644
> --- a/board/schulercontrol/sc_sps_1/sc_sps_1.c
> +++ b/board/schulercontrol/sc_sps_1/sc_sps_1.c
> @@ -26,6 +26,9 @@ DECLARE_GLOBAL_DATA_PTR;
>    */
>   int board_early_init_f(void)
>   {
> +	struct mxs_clkctrl_regs *clkctrl_regs =
> +		(struct mxs_clkctrl_regs *)MXS_CLKCTRL_BASE;
> +

And the same here.

It works ok, but I can't say if it fixes exactly those seldom initialization problems 
because I don't have a reliable way to reproduce them.

Tested-by: Hector Palacios <hector.palacios at digi.com>

Best regards,
--
Hector Palacios


More information about the U-Boot mailing list