Re: Platform device model drawback
flat view
From: Greg KH <hidden>
Date: 2005-11-19 00:02:59
On Thu, Nov 17, 2005 at 04:46:17PM -0700, Grant Likely wrote:
On 11/15/05, Greg KH [off-list ref] wrote:quoted
On Tue, Nov 15, 2005 at 01:34:47PM -0600, Kumar Gala wrote:quoted
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.quoted
quoted
Today both instances are called "deviceA". However we can't register two different drivers as "deviceA".Nor would you want to.quoted
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?
I really do not know, sorry.
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?
No, it can not, sorry. Good luck, greg k-h