From: Arnd Bergmann <arnd@arndb.de>
To: "Dale Farnsworth" <dale@farnsworth.org>
Cc: linuxppc-dev@ozlabs.org, Paul Mackerras <paulus@samba.org>
Subject: Re: [PATCH 9/13] powerpc: Add arch/powerpc mv64x60 I2C platform data setup
Date: Thu, 26 Apr 2007 17:04:06 +0200 [thread overview]
Message-ID: <200704261704.06790.arnd@arndb.de> (raw)
In-Reply-To: <20070426141902.GB29241@xyzzy.farnsworth.org>
On Thursday 26 April 2007, Dale Farnsworth wrote:
>=20
> > The point about the of device tree is that it allows you to probe this
> > kind of device. This means you get automatic module loading based on the
> > device tree, and that the devices show up in sane locations in /sys.
>=20
> I understand the benefits of the DT; that's not the issue.
>
> Here we have platform devices common to MIPS and PowerPC platforms.
> The drivers must continue to support the platform_driver interface
> for MIPS platforms. =A0The question is, where should we put the glue
> that transforms the DT info into the platform_driver format?
>=20
> You seem to suggest putting the ethernet-related glue into
> drivers/net/mv643xx_eth.c. =A0That's bogus, IMHO. The base driver
> shouldn't have to accommodate every arch-specific interface.
> (I know OF isn't strictly arch-specific, but it's far from universal.)
> I put this glue into arch/powerpc/sysdev/mv64x60.c. I still don't see
> the benefit of moving it into the drivers.
Maybe you still haven't understood the difference of an of_platform_driver
compared to the platform_driver glue which you are adding here.
I don't want you to move the glue code into the device driver -- I really
think the glue code should not be there in the first place.
As you probably understand, the Linux driver model represents every piece
of hardware as a 'struct device' which can be embedded in things like
of_device, pci_device or platform_device. Then there are 'struct
device_driver's than handle all devices of a given bus_type/device_id
combination.
With the of device tree, you automatically get an of_device for everything
that is connected to an internal (soc, plb, ssb, ...) bus on the chip
or on the board. According to the driver model, they should be driven
by an of_platform_driver.
What your glue code does is to find a backdoor into the device tree
(through of_find_compatible_node) and create a second struct device
for the same hardware, in an unrelated location in the linux device tree.
This is very confusing if you look at sysfs, e.g. trying to find out
which driver is attached to a given of_device.
It also makes you lose the ability to autoload the driver module,
because autoloading is not supported for a platform_driver (there
is no MODULE_DEVICE_TABLE()).
As you made clear, we will need the platform_driver for the forseeable
future, but I really think that we also need an of_platform_driver
to drive them on powerpc instead of adding another pile of junk like
fsl_soc.c.
I can see multiple ways for you to get there:
1. have a driver that binds to all of_devices supported by mv64x60
and then creates the platform_device for them the way you do in your
glue, but without adding code that manually iterates through
the device tree. Make the platform_device a child of the of_device.
This approach is the closest to what you have right now and would
at least get the sysfs representation right, but not allow module
autoloading and it still duplicates all the devices.
2. remove the dependencies on platform_device data structures from
the current driver code, and add them to a separate file, so you
can link the module either with the platform_driver or with the
of_platform_driver, as I suggested in a previous mail.
I think this would be the best solution.
3. Have a small of_device_driver part that gets added to each
of the device drivers, and that adds the platform_device internally.
This would be like 1., but also allow autoloading.
Arnd <><
next prev parent reply other threads:[~2007-04-26 15:04 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-25 23:46 [PATCH 0/13] powerpc: Add support for Marvell/mv64x60 and prpmc2800 Mark A. Greer
2007-04-25 23:55 ` [PATCH 1/13] powerpc: Add Makefile rule to wrap dts file in zImage Mark A. Greer
2007-04-30 6:06 ` David Gibson
2007-04-25 23:55 ` [PATCH 2/13] powerpc: Add dt_xlate_addr() to bootwrapper Mark A. Greer
2007-04-26 16:44 ` Scott Wood
2007-04-27 5:55 ` Paul Mackerras
2007-04-27 20:48 ` Mark A. Greer
2007-04-25 23:56 ` [PATCH 3/13] powerpc: Add bootwrapper support for Marvell/mv64x60 hostbridge Mark A. Greer
2007-04-27 6:01 ` Paul Mackerras
2007-04-27 22:02 ` Mark A. Greer
2007-05-03 5:25 ` Paul Mackerras
2007-05-03 18:44 ` Mark A. Greer
2007-05-03 19:00 ` Mark A. Greer
2007-05-05 23:27 ` Paul Mackerras
2007-05-07 18:15 ` Mark A. Greer
2007-04-25 23:57 ` [PATCH 4/13] powerpc: Add bootwrapper support for Marvell MPSC Mark A. Greer
2007-04-25 23:57 ` [PATCH 5/13] powerpc: Add bootwrapper support for Marvell/mv64x60 I2C Mark A. Greer
2007-04-25 23:58 ` [PATCH 6/13] powerpc: Add arch/powerpc support for Marvell/mv64x60 hostbridge Mark A. Greer
2007-04-26 0:42 ` Arnd Bergmann
2007-04-26 5:49 ` Dale Farnsworth
2007-05-02 21:38 ` [PATCH 6/13] powerpc: Add arch/powerpc interrupt handler for mv64x60 Dale Farnsworth
2007-05-03 1:47 ` Stephen Rothwell
2007-05-03 2:55 ` Dale Farnsworth
2007-04-25 23:59 ` [PATCH 7/13] powerpc: Add arch/powerpc mv64x60 MPSC platform data setup Mark A. Greer
2007-04-26 0:14 ` Arnd Bergmann
2007-04-26 5:57 ` Dale Farnsworth
2007-04-26 11:24 ` Arnd Bergmann
2007-04-26 14:30 ` Dale Farnsworth
2007-04-26 15:14 ` Arnd Bergmann
2007-05-02 21:41 ` Dale Farnsworth
2007-05-03 6:40 ` Arnd Bergmann
2007-05-04 21:03 ` [PATCH 7/13] powerpc: Create Marvell mv64x60 MPSC (serial) platform_data Dale Farnsworth
2007-05-05 12:26 ` Arnd Bergmann
2007-04-26 0:00 ` [PATCH 8/13] powerpc: Add arch/powerpc mv64x60_eth platform data setup Mark A. Greer
2007-04-26 0:18 ` Arnd Bergmann
2007-04-26 6:00 ` Dale Farnsworth
2007-05-02 21:43 ` Dale Farnsworth
2007-05-03 2:03 ` Stephen Rothwell
2007-05-03 6:43 ` Arnd Bergmann
2007-05-04 21:06 ` [PATCH 8/13] powerpc: Create Marvell mv64x60 ethernet platform_data Dale Farnsworth
2007-05-05 12:28 ` Arnd Bergmann
2007-04-26 0:00 ` [PATCH 9/13] powerpc: Add arch/powerpc mv64x60 I2C platform data setup Mark A. Greer
2007-04-26 0:21 ` Arnd Bergmann
2007-04-26 0:43 ` Mark A. Greer
2007-04-26 0:55 ` Arnd Bergmann
2007-04-26 1:13 ` Mark A. Greer
2007-04-26 2:02 ` Arnd Bergmann
2007-04-26 6:08 ` Dale Farnsworth
2007-04-26 9:00 ` Arnd Bergmann
2007-04-26 14:19 ` Dale Farnsworth
2007-04-26 15:04 ` Arnd Bergmann [this message]
2007-04-27 23:50 ` Dale Farnsworth
2007-04-28 1:05 ` Arnd Bergmann
2007-04-28 2:40 ` Dale Farnsworth
2007-05-01 4:58 ` Paul Mackerras
2007-05-01 4:45 ` Paul Mackerras
2007-04-26 6:48 ` Mark A. Greer
2007-05-02 21:44 ` Dale Farnsworth
2007-05-03 6:53 ` Arnd Bergmann
2007-05-03 13:06 `
2007-05-04 21:08 ` [PATCH 9/13] powerpc: Create Marvell mv64x60 I2C platform_data Dale Farnsworth
2007-05-05 12:29 ` Arnd Bergmann
2007-04-26 0:01 ` [PATCH 10/13] powerpc: Add arch/powerpc mv64x60 PCI setup Mark A. Greer
2007-04-26 0:25 ` Arnd Bergmann
2007-04-26 6:33 ` Dale Farnsworth
2007-04-26 11:39 ` Arnd Bergmann
2007-04-26 14:42 ` Dale Farnsworth
2007-05-02 21:46 ` Dale Farnsworth
2007-05-03 2:13 ` Stephen Rothwell
2007-05-03 2:57 ` Dale Farnsworth
2007-05-03 7:17 ` Arnd Bergmann
2007-05-03 13:45 ` Dale Farnsworth
2007-05-04 21:10 ` [PATCH 10/13] powerpc: Add Marvell mv64x60 PCI bridge support Dale Farnsworth
2007-05-05 12:30 ` Arnd Bergmann
2007-04-26 0:01 ` [PATCH 11/13] powerpc: Add DTS file for the Motorola PrPMC2800 platform Mark A. Greer
2007-04-26 16:42 ` Scott Wood
2007-04-26 23:34 ` Mark A. Greer
2007-04-26 23:37 ` David Gibson
2007-04-27 20:41 ` Mark A. Greer
2007-04-30 16:45 ` Jon Loeliger
2007-04-30 18:08 ` Mark A. Greer
2007-04-30 22:29 ` Mark A. Greer
2007-04-26 0:02 ` [PATCH 12/13] powerpc: Add bootwrapper support for " Mark A. Greer
2007-04-26 0:02 ` [PATCH 13/13] powerpc: Add arch/powerpc support for the " Mark A. Greer
2007-04-26 0:45 ` [PATCH 0/13] powerpc: Add support for Marvell/mv64x60 and prpmc2800 David Gibson
2007-04-26 0:58 ` Mark A. Greer
2007-04-26 1:15 ` Mark A. Greer
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=200704261704.06790.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=dale@farnsworth.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=paulus@samba.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;
as well as URLs for NNTP newsgroup(s).