/* Init Module function -> Called by insmod */ static int __init cw1200_sdio_init(void) { const struct cw1200_platform_data *pdata; int ret; pdata = cw1200_get_platform_data(); ret = sdio_register_driver(&sdio_driver); if (ret) goto err_reg; if (pdata->power_ctrl) { ret = pdata->power_ctrl(pdata, true); if (ret) goto err_power; } ret = cw1200_sdio_on(pdata); if (ret) goto err_on; return 0; err_on: if (pdata->power_ctrl) pdata->power_ctrl(pdata, false); err_power: sdio_unregister_driver(&sdio_driver); err_reg: return ret; }
static int cw1200_sdio_reset(struct sbus_priv *self) { cw1200_sdio_off(self->pdata); msleep(1000); cw1200_sdio_on(self->pdata); return 0; }
/* Init Module function -> Called by insmod */ static int __init cw1200_sdio_init(void) { const struct cw1200_platform_data_sdio *pdata; int ret; /* FIXME -- this won't support multiple devices */ pdata = global_plat_data; if (cw1200_sdio_on(pdata)) { ret = -1; goto err; } ret = sdio_register_driver(&sdio_driver); if (ret) goto err; return 0; err: cw1200_sdio_off(pdata); return ret; }