[PATCH 3/3] HACK: e1000: don't check for FLSWCTL.GLDONE when waiting for idle

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Mon Oct 9 07:24:08 PDT 2017


On Mon, Oct 09, 2017 at 11:36:16AM +0200, Uwe Kleine-König wrote:
> I don't understand all the consequences of this patch yet, but this makes reading
> out the flash chip connected to an i210 work for me.
> ---
>  drivers/net/e1000/eeprom.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/e1000/eeprom.c b/drivers/net/e1000/eeprom.c
> index 739bc17a519e..482a969f8d56 100644
> --- a/drivers/net/e1000/eeprom.c
> +++ b/drivers/net/e1000/eeprom.c
> @@ -709,8 +709,8 @@ static int e1000_flash_mode_wait_for_idle(struct e1000_hw *hw)
>  	 * execution by polling only FLSWCTL.DONE */
>  
>  	const int ret = e1000_poll_reg(hw, E1000_FLSWCTL,
> -				       E1000_FLSWCTL_DONE | E1000_FLSWCTL_GLDONE,
> -				       E1000_FLSWCTL_DONE | E1000_FLSWCTL_GLDONE,
> +				       E1000_FLSWCTL_DONE,
> +				       E1000_FLSWCTL_DONE,

I tested a bit with and without this change at it seems as long as
nothing "strange" happens, testing for both FLSWCTL.DONE and
FLSWCTL.GLDONE (i.e. not applying my HACK patch) works fine.

Still I think only testing for FLSWCTL.DONE is better because it works
well even if the state machine is in the middle of a read request and
then changing the command (which is always done after
e1000_flash_mode_wait_for_idle()) should work well.

I'll resend with a better commit log once I tested this.

Alexey: I didn't understand the comment above the patched line, maybe
I'm missing something?

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |



More information about the barebox mailing list