[PATCH] [MTD] driver/Makefile: Initialize "mtd" and "spi" before "net"
Sudhakar Rajashekhara
sudhakar.raj at ti.com
Tue Aug 18 08:18:06 EDT 2009
On Tue, Aug 18, 2009 at 15:19:08, Andrew Morton wrote:
> On Tue, 18 Aug 2009 15:06:35 +0530 "Sudhakar Rajashekhara" <sudhakar.raj at ti.com> wrote:
>
> > On Tue, Aug 18, 2009 at 13:49:30, Andrew Morton wrote:
> > > On Tue, 18 Aug 2009 12:34:04 -0400 Sudhakar Rajashekhara <sudhakar.raj at ti.com> wrote:
> > >
> > > > On TI's da850/omap-l138 EVM, MAC address is stored in SPI flash.
> > > >
> > > > This patch changes the initialization sequence of the drivers by
> > > > moving mtd and spi ahead of net in drivers/Makefile thereby
> > > > enabling da850/omap-l138 ethernet driver to read the MAC address
> > > > while booting.
> > > >
> > > > Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj at ti.com>
> > > > ---
> > > > drivers/Makefile | 4 ++--
> > > > 1 files changed, 2 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/drivers/Makefile b/drivers/Makefile index
> > > > bc4205d..2a1d41f 100644
> > > > --- a/drivers/Makefile
> > > > +++ b/drivers/Makefile
> > > > @@ -42,6 +42,8 @@ obj-y += macintosh/
> > > > obj-$(CONFIG_IDE) += ide/
> > > > obj-$(CONFIG_SCSI) += scsi/
> > > > obj-$(CONFIG_ATA) += ata/
> > > > +obj-$(CONFIG_MTD) += mtd/
> > > > +obj-$(CONFIG_SPI) += spi/
> > > > obj-y += net/
> > > > obj-$(CONFIG_ATM) += atm/
> > > > obj-$(CONFIG_FUSION) += message/
> > > > @@ -50,8 +52,6 @@ obj-y += ieee1394/
> > > > obj-$(CONFIG_UIO) += uio/
> > > > obj-y += cdrom/
> > > > obj-y += auxdisplay/
> > > > -obj-$(CONFIG_MTD) += mtd/
> > > > -obj-$(CONFIG_SPI) += spi/
> > > > obj-$(CONFIG_PCCARD) += pcmcia/
> > > > obj-$(CONFIG_DIO) += dio/
> > > > obj-$(CONFIG_SBUS) += sbus/
> > >
> > > That isn't a particularly maintainable way of fixing this,
> > > especially as there are no comments in that Makefile to prevent
> > > someone from rebreaking it in the future.
> > >
> > > A better fix would be to use suitably prioritised initcalls - see
> > > include/linux/init.h around line 187.
> > >
> >
> > Currently mtd, spi and net subsystems are initialized with module_init.
> > If I change the way in which these sub-systems are initialized, then
> > I'll be breaking the support for these sub-systems to work as modules.
>
> In what way?
>
Now I got what you were saying. I was able to get the EMAC driver initialize
later than spi and mtd by using late_initcall. With this change EMAC works
as module as well. The patch looks as below:
===
diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
index 12fd446..5e6652b 100644
--- a/drivers/net/davinci_emac.c
+++ b/drivers/net/davinci_emac.c
@@ -2817,7 +2817,7 @@ static int __init davinci_emac_init(void)
{
return platform_driver_register(&davinci_emac_driver);
}
-module_init(davinci_emac_init);
+late_initcall(davinci_emac_init);
/**
* davinci_emac_exit: EMAC driver module exit
===
I'll submit this patch to netdev list.
Thanks,
Sudhakar
More information about the linux-mtd
mailing list