X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fpcmcia%2Fpxa2xx_mainstone.c;h=fda06941e73062cdf9a6629dc9452153cf69f6b3;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=5309734e16875ece7ddf48974e2f1ec59049d4e4;hpb=cee37fe97739d85991964371c1f3a745c00dd236;p=linux-2.6.git diff --git a/drivers/pcmcia/pxa2xx_mainstone.c b/drivers/pcmcia/pxa2xx_mainstone.c index 5309734e1..fda06941e 100644 --- a/drivers/pcmcia/pxa2xx_mainstone.c +++ b/drivers/pcmcia/pxa2xx_mainstone.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include @@ -171,32 +171,26 @@ static int __init mst_pcmcia_init(void) { int ret; - mst_pcmcia_device = kmalloc(sizeof(*mst_pcmcia_device), GFP_KERNEL); + mst_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1); if (!mst_pcmcia_device) return -ENOMEM; - memset(mst_pcmcia_device, 0, sizeof(*mst_pcmcia_device)); - mst_pcmcia_device->name = "pxa2xx-pcmcia"; + mst_pcmcia_device->dev.platform_data = &mst_pcmcia_ops; - ret = platform_device_register(mst_pcmcia_device); + ret = platform_device_add(mst_pcmcia_device); + if (ret) - kfree(mst_pcmcia_device); + platform_device_put(mst_pcmcia_device); return ret; } static void __exit mst_pcmcia_exit(void) { - /* - * This call is supposed to free our mst_pcmcia_device. - * Unfortunately platform_device don't have a free method, and - * we can't assume it's free of any reference at this point so we - * can't free it either. - */ platform_device_unregister(mst_pcmcia_device); } -module_init(mst_pcmcia_init); +fs_initcall(mst_pcmcia_init); module_exit(mst_pcmcia_exit); MODULE_LICENSE("GPL");