* platform bus, usage?
@ 2004-08-22 20:45 Pierre Ossman
2004-08-22 23:02 ` John Lenz
0 siblings, 1 reply; 2+ messages in thread
From: Pierre Ossman @ 2004-08-22 20:45 UTC (permalink / raw)
To: linux-kernel
I'm in the process of writing a driver for a SD/MMC card reader. Since
this is the first driver I'm writing I'm having some difficulties
fitting it into the linux driver model. I've read all the documentation
I can find to no avail.
The device is attached to the LPC bus and cannot be found using PNP.
From what I can gather this driver should therefore be organised under
the platform bus. I can't figure out how to do this though. I've created
the device structure, with platform_bus_type at .bus. I've called
device_register with the structure. Now how to I create a device object
and attach this to the bus? With PCI I guess this handles itself using
the PCI id:s.
At the moment I just let the driver play by itself. But that doesn't
seem to be using the driver model properly.
Any pointers would be helpful. Documentation, functions, example
drivers, anything.
Rgds
Pierre Ossman
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: platform bus, usage?
2004-08-22 20:45 platform bus, usage? Pierre Ossman
@ 2004-08-22 23:02 ` John Lenz
0 siblings, 0 replies; 2+ messages in thread
From: John Lenz @ 2004-08-22 23:02 UTC (permalink / raw)
To: Pierre Ossman; +Cc: linux-kernel
On 08/22/04 15:45:58, Pierre Ossman wrote:
> I'm in the process of writing a driver for a SD/MMC card reader.
> Since this is the first driver I'm writing I'm having some
> difficulties fitting it into the linux driver model. I've read all
> the documentation I can find to no avail.
>
> The device is attached to the LPC bus and cannot be found using PNP.
> From what I can gather this driver should therefore be organised
> under the platform bus. I can't figure out how to do this though.
> I've created the device structure, with platform_bus_type at .bus.
> I've called device_register with the structure. Now how to I create a
> device object and attach this to the bus? With PCI I guess this
> handles itself using the PCI id:s.
>
> At the moment I just let the driver play by itself. But that doesn't
> seem to be using the driver model properly.
>
> Any pointers would be helpful. Documentation, functions, example
> drivers, anything.
First example that comes to mind is the pxafb framebuffer device. The
framebuffer device_driver is implemented in drivers/video/pxafb.c. The
actual devices are implemented in various files in arch/arm/mach-pxa,
for example, take a look at arch/arm/mach-pxa/generic.c
It is a little confusing, becuase the driver just uses a normal
device_driver structure, but for the actual device, you need to create
and register a platform_device structure.
So the driver has something like this
static struct device_driver pxafb_driver = {
.name = "pxa2xx-fb",
.bus = &platform_bus_type,
.probe = pxafb_probe,
#ifdef CONFIG_PM
.suspend = pxafb_suspend,
.resume = pxafb_resume,
#endif
};
registered with a normal driver_register.
the actual device looks like
static struct platform_device pxafb_device = {
.name = "pxa2xx-fb",
.id = -1,
.dev = {
.platform_data = &pxa_fb_info,
.dma_mask = &fb_dma_mask,
.coherent_dma_mask = 0xffffffff,
},
.num_resources = ARRAY_SIZE(pxafb_resources),
.resource = pxafb_resources,
};
and it is registered with platform_add_devices.
Notice the two names are the same. Devices and drivers on the platform
bus are matched by name. (see platform_match function in drivers/base/
platform.c)
Hope that helps,
John
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-08-22 23:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-22 20:45 platform bus, usage? Pierre Ossman
2004-08-22 23:02 ` John Lenz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox