On Mon, 3 Nov 2008, Finn Thain wrote:
On Sun, 2 Nov 2008, Brad Boyer wrote:
On Sun, Nov 02, 2008 at 12:21:23PM +0100, Laurent Vivier wrote:
Le 2 nov. 08 �9:54, Geert Uytterhoeven a �it :
The preferred way to do this these days is to create a platform
device with a struct resource that points to the SWIMBase.
Is this what Finn explains also in his answer ? If so, I agree.
Not exactly. What Finn suggested is to match the way we handle many of
the other on-board things like ADB and SCSI. What Geert suggests is a
much more recent way to do things that we generally haven't done for
Mac-only drivers. I think Finn used it for the new Sonic ethernet driver
because we share it with other systems. The code in macsonic.c also has
the extra complexity from having both NuBus and on-board hardware to
support, and NuBus also hasn't been updated to the new driver model.
Finn's suggestion of using the macintosh_config entry and data table is
the easiest way to get it working, but Geert's method would move to the
real device/driver model that most other systems are using now.
I agree with Geert. Ignore my comment about device_initcall -- I was
looking at via-cuda.c but that is not a good example.
drivers/scsi/mac_esp.c is a better example.
esp_mac_probe checks the macintosh_config entry. That and esp_mac_remove
are the platform device entry points Geert referred to. The module entry
points are mac_esp_init and mac_esp_exit. I think you could use either of
the platform device probe routine or the module init routine to set the
base address.
Ideally, the _probe() routine should not look at the bits in macintosh_config,
but only at the platform device and its resources.
The creation of the platform device should be moved to arch/m68k/mac/config,
which would create the platform device, and only if the bits in
macintosh_config indicate that the hardware is present. The actual value of
swim_base can be stored in a struct resource linked to the platform device.
So far the only platform device for m68k (not in mainline) is Michael's
EtherNAT driver, cfr. arch/m68k/atari/config.c. Note that that one registers
the platform device unconditionally, as there's no magic predictor for its
presence in the firmware or machine tables.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html