static int bcmsdh_sdmmc_probe(struct sdio_func *func, const struct sdio_device_id *id) { int ret = 0; if (func == NULL) return -EINVAL; sd_err(("bcmsdh_sdmmc: %s Enter\n", __FUNCTION__)); sd_info(("sdio_bcmsdh: func->class=%x\n", func->class)); sd_info(("sdio_vendor: 0x%04x\n", func->vendor)); sd_info(("sdio_device: 0x%04x\n", func->device)); sd_info(("Function#: 0x%04x\n", func->num)); /* 4318 doesn't have function 2 */ if ((func->num == 2) || (func->num == 1 && func->device == 0x4)) ret = sdioh_probe(func); #ifdef CONFIG_MACH_NOTLE if (func->num == 2) { sdmmc_pm_workqueue = create_freezable_workqueue("bcmsdh_sdmmc"); if (IS_ERR(sdmmc_pm_workqueue)) { sd_err(("bcmsdh fail to create workqueue\n")); return -EINVAL; } INIT_DELAYED_WORK(&bcmshd_resume_work, bcmshd_resume_delayed_work_fn); } #endif return ret; }
static int bcmsdh_sdmmc_probe(struct sdio_func *func, const struct sdio_device_id *id) { int ret = 0; if (func == NULL) return -EINVAL; sd_err(("bcmsdh_sdmmc: %s Enter\n", __FUNCTION__)); sd_info(("sdio_bcmsdh: func->class=%x\n", func->class)); sd_info(("sdio_vendor: 0x%04x\n", func->vendor)); sd_info(("sdio_device: 0x%04x\n", func->device)); sd_info(("Function#: 0x%04x\n", func->num)); /* 4318 doesn't have function 2 */ if ((func->num == 2) || (func->num == 1 && func->device == 0x4)) ret = sdioh_probe(func); return ret; }