From: Albert ARIBAUD <albert.aribaud@free.fr>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] IDE: Don't assume there are always two devices per bus
Date: Mon, 06 Sep 2010 07:54:08 +0200 [thread overview]
Message-ID: <4C848200.7080401@free.fr> (raw)
In-Reply-To: <20100905221935.ACE1E1506AA@gemini.denx.de>
Hi Wolfgang,
Le 06/09/2010 00:19, Wolfgang Denk a ?crit :
> Dear Albert ARIBAUD,
>
> In message<4C8201CB.9080606@free.fr> you wrote:
>>
>> I think that, rather than modifying IDE_BUS(dev), you should introduce a
>> CONFIG_SYS_IDE_MAXDEVICE_PER_BUS config option that will limit how many
>> devices will be probed for on a given bus.
>> Without this config option, for each bus B there can be up to two
>> devices, numbered (B*2) and (B*2+1); with the config option, there can
>> be only one device numbered (B*2). In all cases, IDE_BUS(dev) can remain
>> defined as (dev>> 1) which will always amount to B.
>
> I'm not happy at all about this.
>
> First, CONFIG_SYS_IDE_* is for "IDE" (aka "Integrated Drive
> Electronics"), now usually references as "Parallel ATA", as defined
> by the underlying AT Attachment (ATA) and AT Attachment Packet
> Interface (ATAPI) standards. It is my understanding that these
> standards allow for one or two devices on the bus. So if there was any
> CONFIG_SYS_IDE_MAXDEVICE_PER_BUS, it would have to be set to 2, which
> renders it useless.
You're right, and actually this is an overlook on my part, as the
current set of port configs has _ATA_ in in addition to _IDE. Would the
name CONFIG_SYS_ATA_IDE_MAXDEVICEPERBUS make you be happier?
> Second, who says that one setting fits all busses in the system? What
> happens if you want (or need) to setb the limit to 1, and I insert a
> PCI PATA controller card with 2 devices attached to a bus?
Indeed; and additionally, who says you can only have two IDE busses? I
am facing the case right now with the MV88SX6081, which is an 8-ports
controller.
I have thus started a patch where the CONFIG_SYS_ATA_IDE{0,1}_OFFSET are
replaced with a single one, CONFIG_SYS_ATA_IDE_OFFSETS, defined as an
open array of values, which allows as many ports as required. For e.g.
openrd_base, the config for ATA ports would change from:
/* ATA bus 0 is Kirkwood port 0 on openrd */
#define CONFIG_SYS_ATA_IDE0_OFFSET KW_SATA_PORT0_OFFSET
/* ATA bus 1 is Kirkwood port 1 on openrd */
#define CONFIG_SYS_ATA_IDE1_OFFSET KW_SATA_PORT1_OFFSET
to:
/* OpenRD has two ATA busses, provided by kirkwood */
#define CONFIG_SYS_ATA_IDE_OFFSETS { \
KW_SATA_PORT0_OFFSET, \
KW_SATA_PORT1_OFFSET \
}
I could easily extend my work to account for a maximum number of devices
per bus by replacing CONFIG_SYS_ATA_IDE_OFFSETS with a more general
CONFIG_SYS_ATA_IDE_CONFIG array of structs which would provide the port
offset and maximum devices for each bus:
/* OpenRD's two kirkwood busses are SATA: 1 device per bux max) */
#define CONFIG_SYS_ATA_IDE_CONFIG { \
{ KW_SATA_PORT0_OFFSET, 1}, \
{ KW_SATA_PORT1_OFFSET, 1} \
}
> Sorry, this does not seem to fit IMO.
How about the two suggestions above?
Amicalement,
--
Albert.
next prev parent reply other threads:[~2010-09-06 5:54 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-14 10:41 [U-Boot] IDE_BUS unconditionally expects 2 devices per bus Rogan Dawes
2010-08-14 10:46 ` Rogan Dawes
2010-08-14 11:45 ` Albert ARIBAUD
2010-08-15 20:35 ` [U-Boot] [PATCH] IDE: Don't assume there are always two " Rogan Dawes
2010-08-15 21:30 ` Wolfgang Denk
2010-08-16 5:47 ` [U-Boot] [PATCH v2] " Rogan Dawes
2010-08-16 5:47 ` [U-Boot] [PATCH] " Rogan Dawes
2010-08-26 13:16 ` Rogan Dawes
2010-09-04 8:22 ` Albert ARIBAUD
2010-09-04 9:07 ` Albert ARIBAUD
2010-09-05 21:23 ` Rogan Dawes
2010-09-05 22:19 ` Wolfgang Denk
2010-09-06 5:54 ` Albert ARIBAUD [this message]
2010-09-06 6:03 ` Rogan Dawes
2010-09-06 6:05 ` Wolfgang Denk
2010-09-06 6:45 ` Albert ARIBAUD
2010-09-06 8:18 ` Wolfgang Denk
2010-09-06 11:32 ` Albert ARIBAUD
2010-09-06 12:50 ` Wolfgang Denk
2010-09-06 17:15 ` Albert ARIBAUD
2010-09-06 19:35 ` Wolfgang Denk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C848200.7080401@free.fr \
--to=albert.aribaud@free.fr \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox