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 � 09:54, Geert Uytterhoeven a �crit :
> > > > 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 -- [EMAIL PROTECTED]
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 [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html