From: John Lenz <lenz@cs.wisc.edu>
To: Pierre Ossman <drzeus-list@drzeus.cx>
Cc: linux-kernel@vger.kernel.org
Subject: Re: platform bus, usage?
Date: Sun, 22 Aug 2004 23:02:47 +0000 [thread overview]
Message-ID: <1093215767l.8554l.0l@hydra> (raw)
In-Reply-To: <41290606.10101@drzeus.cx> (from drzeus-list@drzeus.cx on Sun Aug 22 15:45:58 2004)
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
prev parent reply other threads:[~2004-08-22 23:01 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-22 20:45 platform bus, usage? Pierre Ossman
2004-08-22 23:02 ` John Lenz [this message]
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=1093215767l.8554l.0l@hydra \
--to=lenz@cs.wisc.edu \
--cc=drzeus-list@drzeus.cx \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox