[U-Boot] [PATCH v3] NET: add ENC28J60 driver using SPI framework
Mike Frysinger
vapier at gentoo.org
Tue Sep 21 07:52:45 CEST 2010
On Tuesday, September 21, 2010 01:21:46 Reinhard Meyer wrote:
> > On Monday, September 20, 2010 17:44:38 Mike Frysinger wrote:
> >> finally got around to testing this. seems like the init needs some
> >> work. if i power on the system (cold boot), boot Linux over the on-chip
> >> mac, and let Linux program the enc part, it works fine under Linux.
> >> then i do a software reset back into u-boot, it can use the enc fine
> >> too.
> >>
> >> but if i cold boot u-boot and try to use the enc part, i get:
> >> timeout waiting for CLKRDY
> >>
> >> enabling DEBUG doesnt show any additional output though.
> >
> > comparing the linux and u-boot drivers leads me to this fix:
> >
> > --- a/drivers/net/enc28j60.c
> > +++ b/drivers/net/enc28j60.c
> > @@ -632,6 +632,8 @@ static int enc_clock_wait(enc_dev_t *enc)
> >
> > {
> >
> > uint64_t etime;
> >
> > + enc_bclr(enc, CTL_REG_ECON2, ENC_ECON2_PWRSV);
> > +
> >
> > /* one second timeout */
> >
> > etime = get_ticks() + get_tbclk();
>
> The Bit PWRSV is cleared (according to data sheet) on every Reset.
> If that patch really helps in your case either the data sheet is wrong
> (for your mask of the chip) OR there is another reason while the timeout
> occurs in your case (I never had this timeout).
>
> I don't mind explicitly clearing this bit, but I suspect that this just
> covers another problem.
>
> Could you read and print ECON2 in your case and see if PWRSV is really set?
well, now i cant reproduce the issue, cold or warm booting :/. so i guess
ignore this change until i can reproduce things and get a register dump.
although, earlier i was testing when the sun was out and shining on the board
but now it's night, so maybe it's a cold-blooded part :x.
i looked at the linux driver again and i think i misread it. it isnt clearing
ECON2 at reset, just when leaving low power mode. it clears ECON1 after doing
a soft reset.
> Or, does the timeout really come to be 1 second - does get_tbclk()
> really return the timer increments per second? On many architectures
> get_tblck() simply returns CONFIG_SYS_HZ and not the number of timer
> increments per second (which can be a different and much higher value).
the Blackfin timer is just fine thanks :P. it was pausing about 1 second
between display of "enc0.18" and "CLKRDY timeout". it wasnt an instantaneous
display of the two lines.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20100921/13e03982/attachment.pgp
More information about the U-Boot
mailing list