Grant Likely wrote: > I'm working on an MPC52xx SPI device driver using one of the PSC. > However, when I call driver_register() I get a failure (-17, EEXISTS) > with a traceback (posted below). > > I've tracked it down to failing when trying to create a sysfs entry > for the driver. It fails because sysfs tries to create a directory > that already exists (mpc52xx_psc). The directory was already created > when the psc serial port device driver was registered. > >>From what I can tell, I should be able to register more than one > driver for a particular device name (mpc52xx_psc).
I always assumed that yes. But now looking more closely, I'm not sure what I based that assumption on ... And if not the case that's indeed a problem because that's what's used to support the different function supported by the PSCs. > Otherwise I would > need to change arch/ppc/syslib/mpc52xx_devices.c to have a different > name for each psc. No you shouldn't have to touch that. The mpc52xx_match_psc_function(idx, "spi") is there to know which driver should be used for what PSC and you're using it correctly so it _should_ work. > If I change the sysfs code to ignore the failure > to create a directory then the driver seems to register fine. A "better" quick-fix would be to change the platform_match (drivers/platform.c) to support "sub-fonctions". For example when using mpc52xx_psc.spi it only matches what's before the dot (if any) with the device name. That changes the semantic of the driver names for the platform bus however, making the dot a "special" char. Sylvain