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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.