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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.