diff mbox

[MTD] driver/Makefile: Initialize "mtd" and "spi" before "net"

Message ID 011101ca1ffd$f15ab100$d4101300$@raj@ti.com
State Not Applicable
Headers show

Commit Message

Rajashekhara, Sudhakar Aug. 18, 2009, 12:18 p.m. UTC
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@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@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@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:

===

I'll submit this patch to netdev list.

Thanks,
Sudhakar
diff mbox

Patch

===
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