[U-Boot] OpenRD Ultimate SATA & SD

Alexei Ozhigov alexei.ozhigov at gmail.com
Mon Jun 20 11:30:13 CEST 2011


2011/6/18 Albert ARIBAUD <albert.u.boot at aribaud.net>:
> Hi,
>
> Le 17/06/2011 10:29, Alexei Ozhigov a écrit :
>>
>> 2011/6/17 Prafulla Wadaskar<prafulla at marvell.com>:
>>>
>>>
>>>> -----Original Message-----
>>>> From: Philip Hands [mailto:phil at hands.com]
>>>> Sent: Friday, June 17, 2011 1:33 AM
>>>> To: Alexei Ozhigov
>>>> Cc: Prafulla Wadaskar; u-boot at 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.ozhigov at 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>>
================================================================


More information about the U-Boot mailing list