Пример #1
0
/* 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;
}