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

Reply via email to