public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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


      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