Platform device model drawback
Grant Likely
glikely at gmail.com
Fri Nov 18 10:46:17 EST 2005
On 11/15/05, Greg KH <greg at kroah.com> wrote:
> On Tue, Nov 15, 2005 at 01:34:47PM -0600, Kumar Gala wrote:
> > This is where the confusion is. We have two instances of device A. We
> > want instance 1 of device A bound to driver "enet" and instance 2 of
> > device A bound to "serial".
>
> That's different from what was described earlier :)
>
> In this case, you need two different struct devices.
Which is what we have.
>
> > Today both instances are called "deviceA". However we can't register two
> > different drivers as "deviceA".
>
> Nor would you want to.
>
> > Not sure if that clarifies the issue any.
>
> A bit. I think it still sounds messy...
Does this help? (We also discussed this a bit at the PPC BoF at OLS this year)
For example on the mpc52xx (see arch/ppc/syslib/mpc52xx_devices.c);
- 6 PSC devices on chip;
- (struct platform_device) for each device has: .name='mpc52xx-psc';
- However, SCC1 may be driven by the Ethernet driver but PSC2 and
PSC6 may be serial
- problem then is: How do you get only PSC1 bound to the
psc-ethernet driver and only PSC2 & PSC6 bound to the serial driver?
Possible solution; Modify the naming scheme slightly from what is
currently used.
1. Make the Ethernet driver register the name "mpc52xx-psc:eth"
2. Make the serial driver register the name "mpc52xx-psc:uart"
3. In the board-specific platform code, modify the .name field in
struct platform_device *before* the device is registered with the
platform device. (possibly by extending ppc_sys_device_fixup callback)
- The board specific code would set PSC1 to "mpc52xx-psc:eth",
PSC2&6 to "mpc52xx-psc:uart". PSC3-5 would stick with "mpc52xx-psc"
and so would not get bound to anything.
Q: Can the .name field be modified *after* platform_device is
registered w/ the platform bus?
g.
More information about the Linuxppc-embedded
mailing list