2011/6/18 Albert ARIBAUD <albert.u.b...@aribaud.net>: > Hi, > > Le 17/06/2011 10:29, Alexei Ozhigov a écrit : >> >> 2011/6/17 Prafulla Wadaskar<prafu...@marvell.com>: >>> >>> >>>> -----Original Message----- >>>> From: Philip Hands [mailto:p...@hands.com] >>>> Sent: Friday, June 17, 2011 1:33 AM >>>> To: Alexei Ozhigov >>>> Cc: Prafulla Wadaskar; u-boot@lists.denx.de; Prabhanjan Sarnaik; Ashish >>>> Karkare >>>> Subject: Re: [U-Boot] OpenRD Ultimate SATA& SD >>>> >>>> On Thu, 16 Jun 2011 16:18:46 +0400, Alexei Ozhigov >>>> <alexei.ozhi...@gmail.com> wrote: >>>> ... >>>>> >>>>> I am experiencing the same problem with SATA right now with >>>>> v2011.06-rc2 (tried also the latest master). If MVSATA_STATUS_TIMEOUT >>>>> in mvsata_ide_initialize_port is ignored, SATA drive is found on the >>>>> second port and I am able to read the drive's content. >>>> >>>> Inspired by what you say about timeouts, I thought perhaps increasing >>>> the timeout from 10ms to 1s might make a difference -- that worked! >>>> >>>> ... except that now, it's working regardless :-( >>>> >>>> So, I've no idea if that's really related to what's going on, because >>>> I've now gone as far as reducing the timeout to 5ms and it's _still_ >>>> working fine, so perhaps some part of the SATA subsystem was in a state >>>> that was somehow reset by waiting a bit longer for the startup once, and >>>> that's somehow "fixed" it. >>>> >>>> It is still working despite powering down the machine for a while, so >>>> I'm guessing whatever changed is something to do with the state of the >>>> hard drive. >>>> >>>> Sadly that means that I've now lost the ability to test this, since >>>> trying any of the versions that were previously failing now work. >>>> >>>> Anyway, Alexei, try increasing the timeout (i.e. the value being >>>> assigned to timeleft) --- if that works for you too, it seems pretty >>>> harmless, so might be appropriate for wider adoption. >> >> I have already tried longer timeouts for timeleft and it does not help. >> >> Also with timeout circumvention the SATA flash card I was hoping to >> boot from (Transcend TS1GSDOM22V) is identified as follows: >> >> Bus 0: OK Bus 1: OK >> Device 0: Model: TRANSCEND Firm: 20080128 Ser#: 20080407 00000005 >> Type: Hard Disk >> Capacity: 955.8 MB = 0.9 GB (1957536 x 512) >> IDE read: device 0 not ready >> IDE read: device 0 not ready >> Device 1: Model: Firm: Ser#: >> Type: Hard Disk >> Capacity: not available >> >> And then the card cannot be read. First attempt shows "OK" although >> the data written to memory are wrong, next attempts result in "device >> 0 not ready". On the other hand, Linux (Debian ARM port) does not >> recognize the card either. So if this problem is not related to >> improper initialization, the question is how SATA flash differs from >> regular SATA drives with respect to SATA controller in 88F6281 and if >> it is actually possible to work with SATA flash on OpenRD. > > Can you #define DEBUG at the start of common/cmd_ide.c and rerun the test? > > Amicalement, > -- > Albert. >
That is what is printed with regular SATA drive: ================================================================ Marvell>> ide reset Reset IDE: MVSATA_STATUS_TIMEOUT ide_preinit failed Bus 0: ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 OK Bus 1: ide_outb (dev= 1, port= 0x118, val= 0xf0) : @ 0xf1082118 ide_inb (dev= 1, port= 0x11c) : @ 0xf108211c -> 0x50 OK Device 0: ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_outb (dev= 0, port= 0x11c, val= 0xec) : @ 0xf108211c ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd0 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x58 in input data base for read is f1082100 Model: TOSHIBA MK1637GSX Firm: DL030G Ser#: 97FXT4OUT Type: Hard Disk Supports 48-bit addressing Capacity: 152627.8 MB = 149.0 GB (312581808 x 512) ide_read dev 0 start 100000010, blocks 1FFBAC64 buffer at 10 ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 ide_outb (dev= 0, port= 0x11c, val= 0xe5) : @ 0xf108211c ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 ide_inb (dev= 0, port= 0x108) : @ 0xf1082108 -> 0xff Powersaving FF ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 ide_outb (dev= 0, port= 0x108, val= 0x01) : @ 0xf1082108 ide_outb (dev= 0, port= 0x10c, val= 0x10) : @ 0xf108210c ide_outb (dev= 0, port= 0x110, val= 0x00) : @ 0xf1082110 ide_outb (dev= 0, port= 0x114, val= 0x00) : @ 0xf1082114 ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_outb (dev= 0, port= 0x11c, val= 0x20) : @ 0xf108211c ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd0 ... ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd0 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x58 in input data base for read is f1082100 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 ide_read dev 0 start 100000000, blocks 1FE32A78 buffer at 0 ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 ide_outb (dev= 0, port= 0x11c, val= 0xe5) : @ 0xf108211c ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd0 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 ide_inb (dev= 0, port= 0x108) : @ 0xf1082108 -> 0xff Powersaving FF ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 ide_outb (dev= 0, port= 0x108, val= 0x01) : @ 0xf1082108 ide_outb (dev= 0, port= 0x10c, val= 0x00) : @ 0xf108210c ide_outb (dev= 0, port= 0x110, val= 0x00) : @ 0xf1082110 ide_outb (dev= 0, port= 0x114, val= 0x00) : @ 0xf1082114 ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_outb (dev= 0, port= 0x11c, val= 0x20) : @ 0xf108211c ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd0 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x58 in input data base for read is f1082100 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 Device 1: ide_outb (dev= 1, port= 0x118, val= 0xf0) : @ 0xf1082118 ide_outb (dev= 1, port= 0x11c, val= 0xec) : @ 0xf108211c ide_inb (dev= 1, port= 0x11c) : @ 0xf108211c -> 0xd0 ide_inb (dev= 1, port= 0x11c) : @ 0xf108211c -> 0x00 not available Marvell>> ==================================================== Now with SATA flash: ==================================================== Marvell>> ide reset Reset IDE: MVSATA_STATUS_TIMEOUT ide_preinit failed Bus 0: ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x80 ... (previous string repeated about 15 times) ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 OK Bus 1: ide_outb (dev= 1, port= 0x118, val= 0xf0) : @ 0xf1082118 ide_inb (dev= 1, port= 0x11c) : @ 0xf108211c -> 0x50 OK Device 0: ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_outb (dev= 0, port= 0x11c, val= 0xec) : @ 0xf108211c ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd0 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x58 in input data base for read is f1082100 Model: TRANSCEND Firm: 20080128 Ser#: 20080407 00000005 Type: Hard Disk Capacity: 955.8 MB = 0.9 GB (1957536 x 512) ide_read dev 0 start 100000010, blocks 1FFBAC64 buffer at 10 ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x58 ide_outb (dev= 0, port= 0x11c, val= 0xe5) : @ 0xf108211c ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd8 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd8 ... (repeated for about 1 min.) IDE read: device 0 not ready ide_read dev 0 start 100000000, blocks 1FE32A78 buffer at 0 ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd8 ... (repeated for about 1 min.) IDE read: device 0 not ready Device 1: ide_outb (dev= 1, port= 0x118, val= 0xf0) : @ 0xf1082118 ide_outb (dev= 1, port= 0x11c, val= 0xec) : @ 0xf108211c ide_inb (dev= 1, port= 0x11c) : @ 0xf108211c -> 0xd8 ... (repeated for about 1 min.) in input data base for read is f1082100 Model: Firm: Ser#: Type: Hard Disk Capacity: not available Marvell>> Reset IDE: MVSATA_STATUS_TIMEOUT ide_preinit failed Bus 0: ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x80 ... (repeated about 15 times) ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 OK Bus 1: ide_outb (dev= 1, port= 0x118, val= 0xf0) : @ 0xf1082118 ide_inb (dev= 1, port= 0x11c) : @ 0xf108211c -> 0x50 OK Device 0: ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_outb (dev= 0, port= 0x11c, val= 0xec) : @ 0xf108211c ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd0 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x58 in input data base for read is f1082100 Model: TRANSCEND Firm: 20080128 Ser#: 20080407 00000005 Type: Hard Disk Capacity: 955.8 MB = 0.9 GB (1957536 x 512) ide_read dev 0 start 100000010, blocks 1FFBAC64 buffer at 10 ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x58 ide_outb (dev= 0, port= 0x11c, val= 0xe5) : @ 0xf108211c ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd8 ... (repeated for about 1 min.) IDE read: device 0 not ready ide_read dev 0 start 100000000, blocks 1FE32A78 buffer at 0 ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd8 ... (repeated for about 1 min.) IDE read: device 0 not ready Device 1: ide_outb (dev= 1, port= 0x118, val= 0xf0) : @ 0xf1082118 ide_outb (dev= 1, port= 0x11c, val= 0xec) : @ 0xf108211c ide_inb (dev= 1, port= 0x11c) : @ 0xf108211c -> 0xd8 ... (repeated for about 1 min.) in input data base for read is f1082100 Model: Firm: Ser#: Type: Hard Disk Capacity: not available Marvell>> Reset IDE: MVSATA_STATUS_TIMEOUT ide_preinit failed Bus 0: ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x80 ... (repeated about 15 times) ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x50 OK Bus 1: ide_outb (dev= 1, port= 0x118, val= 0xf0) : @ 0xf1082118 ide_inb (dev= 1, port= 0x11c) : @ 0xf108211c -> 0x50 OK Device 0: ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_outb (dev= 0, port= 0x11c, val= 0xec) : @ 0xf108211c ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd0 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x58 in input data base for read is f1082100 Model: TRANSCEND Firm: 20080128 Ser#: 20080407 00000005 Type: Hard Disk Capacity: 955.8 MB = 0.9 GB (1957536 x 512) ide_read dev 0 start 100000010, blocks 1FFBAC64 buffer at 10 ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0x58 ide_outb (dev= 0, port= 0x11c, val= 0xe5) : @ 0xf108211c ide_inb (dev= 0, port= 0x11c) : @ 0xf108211c -> 0xd8 ... (repeated for about 1 min.) IDE read: device 0 not ready ide_read dev 0 start 100000000, blocks 1FE32A78 buffer at 0 ide_outb (dev= 0, port= 0x118, val= 0xe0) : @ 0xf1082118 ... (repeated for about 1 min.) IDE read: device 0 not ready Device 1: ide_outb (dev= 1, port= 0x118, val= 0xf0) : @ 0xf1082118 ide_outb (dev= 1, port= 0x11c, val= 0xec) : @ 0xf108211c ... (repeated for about 1 min.) in input data base for read is f1082100 Model: Firm: Ser#: Type: Hard Disk Capacity: not available Marvell>> ================================================================ _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot