• A
    tricky one: hisax sections · 56d74dd5
    Al Viro 提交于
    a) hisax_init_pcmcia() needs to be defined only if we have
       CONFIG_HOTPLUG (no PCMCIA support otherwise) and can be declared
       __devinit.
    
    b) HiSax_inithardware() can go __init
    
    c) hisax_register() is passing to checkcard() full-blown hisax_cs_setup_card():
    	checkcard(i, id, NULL, hisax_d_if->owner, hisax_cs_setup_card);
       The problem with it is that
    	* hisax_cs_setup_card() is __devinit
    	* hisax_register() is not
    	* hisax_cs_setup_card() is a switch from hell, calling a lot of
    	  setup_some_weirdcard() depending on card->typ.  _These_ are also
    	  __devinit.
    
       However, in hisax_register() we have card->typ equal to
       ISDN_CTYPE_DYNAMIC, which reduces hisax_cs_setup_card() to "nevermind
       all that crap, just do nothing and return 2".  So we add a
       trimmed-down callback doing just that and passed to checkcard() by
       hisax_register().  _This_ is non-init (we can stand the impact on
       .text size).
    
    Voila - no section warnings from drivers/isdn
    Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    56d74dd5
config.c 47.0 KB