diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2008-11-22 17:36:54 (GMT) |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-11-30 18:03:37 (GMT) |
commit | 56d74dd5f7ad8b6b0979ce915d51cf03bcc57267 (patch) | |
tree | 1696aadcb0113e01bc9f8508bae00a3ba7922789 /arch/alpha | |
parent | 8419641450edc838a6ce7cdf0f99d262bf0af2d5 (diff) | |
download | linux-56d74dd5f7ad8b6b0979ce915d51cf03bcc57267.tar.xz |
tricky one: hisax sections
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: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/alpha')
0 files changed, 0 insertions, 0 deletions