static int sapphire_gpio_get_irq_num(struct gpio_chip *chip, unsigned int gpio, unsigned int *irqp, unsigned long *irqnumflagsp) { DBG("gpio=%d, l=0x%x\r\n", gpio, readb(SAPPHIRE_CPLD_INT_LEVEL)); DBG("SAPPHIRE_GPIO_INT_B0_BASE=%d, SAPPHIRE_GPIO_LAST_INT=%d\r\n", SAPPHIRE_GPIO_INT_B0_BASE, SAPPHIRE_GPIO_LAST_INT); if ((gpio < SAPPHIRE_GPIO_INT_B0_BASE) || (gpio > SAPPHIRE_GPIO_LAST_INT)) return -ENOENT; *irqp = SAPPHIRE_GPIO_TO_INT(gpio); DBG("*irqp=%d\r\n", *irqp); if(irqnumflagsp) *irqnumflagsp = 0; return 0; }
int __init sapphire_init_mmc(unsigned int sys_rev) { wifi_status_cb = NULL; sdslot_vreg_enabled = 0; vreg_sdslot = vreg_get(0, "gp6"); if (IS_ERR(vreg_sdslot)) return PTR_ERR(vreg_sdslot); vreg_wifi_osc = vreg_get(0, "mmc"); if (IS_ERR(vreg_wifi_osc)) return PTR_ERR(vreg_wifi_osc); set_irq_wake(SAPPHIRE_GPIO_TO_INT(SAPPHIRE_GPIO_SDMC_CD_N), 1); msm_add_sdcc(1, &sapphire_wifi_data, 0, 0); if (!opt_disable_sdcard) msm_add_sdcc(2, &sapphire_sdslot_data, SAPPHIRE_GPIO_TO_INT(SAPPHIRE_GPIO_SDMC_CD_N), 0); else printk(KERN_INFO "sapphire: SD-Card interface disabled\n"); return 0; }
static unsigned int sapphire_sdslot_status(struct device *dev) { unsigned int status; status = (unsigned int) gpio_get_value(SAPPHIRE_GPIO_SDMC_CD_N); return !status; } #define SAPPHIRE_MMC_VDD (MMC_VDD_165_195 | MMC_VDD_20_21 | MMC_VDD_21_22 \ | MMC_VDD_22_23 | MMC_VDD_23_24 | MMC_VDD_24_25 \ | MMC_VDD_25_26 | MMC_VDD_26_27 | MMC_VDD_27_28 \ | MMC_VDD_28_29 | MMC_VDD_29_30) static struct mmc_platform_data sapphire_sdslot_data = { .ocr_mask = SAPPHIRE_MMC_VDD, .status_irq = SAPPHIRE_GPIO_TO_INT(SAPPHIRE_GPIO_SDMC_CD_N), .status = sapphire_sdslot_status, .translate_vdd = sapphire_sdslot_switchvdd, }; /* ---- WIFI ---- */ static uint32_t wifi_on_gpio_table[] = { PCOM_GPIO_CFG(51, 1, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_4MA), /* DAT3 */ PCOM_GPIO_CFG(52, 1, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_4MA), /* DAT2 */ PCOM_GPIO_CFG(53, 1, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_4MA), /* DAT1 */ PCOM_GPIO_CFG(54, 1, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_4MA), /* DAT0 */ PCOM_GPIO_CFG(55, 1, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_8MA), /* CMD */ PCOM_GPIO_CFG(56, 1, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_8MA), /* CLK */ PCOM_GPIO_CFG(29, 0, GPIO_INPUT, GPIO_NO_PULL, GPIO_4MA), /* WLAN IRQ */ };