/* Called from board.c */ void __init *wifi_platform_data(void *info) { unsigned int sdhci_quirk = SDHCI_QUIRK2_ADVERTISE_2V0_FORCE_1V8 | SDHCI_QUIRK2_ENABLE_MMC_PM_IGNORE_PM_NOTIFY; pr_err("Using WiFi platform data\n"); /* Set vendor specific SDIO quirks */ sdhci_pdata_set_quirks(sdhci_quirk); #ifndef CONFIG_ACPI /* We are SFI here, register platform device */ wifi_platform_data_init_sfi(); #endif return &wifi_device; }
/* Called if SFI device WLAN is present */ void __init wifi_platform_data_fastirq(struct sfi_device_table_entry *pe, struct devs_id *dev) { /* This is used in the driver to know if it is GPIO/FastIRQ */ pdata.use_fast_irq = true; if (wifi_res[0].start == -1) { pr_info("Using WiFi platform data (Fast IRQ)\n"); /* Set vendor specific SDIO quirks */ sdhci_pdata_set_quirks(sdhci_quirk); wifi_platform_data_init_sfi_fastirq(pe, true); } else { pr_info("Using WiFi platform data (Fast IRQ, overloading GPIO mode set previously)\n"); /* We do not register platform device, as it's already been done by wifi_platform_data */ wifi_platform_data_init_sfi_fastirq(pe, false); } }
/* Called from board.c */ void __init *wifi_platform_data(void *info) { /* When fast IRQ platform data has been called first, don't pursue */ if (wifi_res[0].start != -1) return NULL; pr_info("Using generic wifi platform data\n"); /* Set vendor specific SDIO quirks */ #ifdef CONFIG_MMC_SDHCI_PCI sdhci_pdata_set_quirks(sdhci_quirk); #endif #ifndef CONFIG_ACPI /* We are SFI here, register platform device */ wifi_platform_data_init_sfi_gpio(); #endif return &wifi_device; }