static void __init manta_gpio_power_init(void) { int err = 0; err = gpio_request_one(EXYNOS5_GPX2(7), 0, "GPX2(7)"); if (err) { printk(KERN_ERR "failed to request GPX2(7) for " "suspend/resume control\n"); return; } s3c_gpio_setpull(EXYNOS5_GPX2(7), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPX2(7)); }
static void __init smdk5250_ehci_init(void) { struct s5p_ehci_platdata *pdata = &smdk5250_ehci_pdata; #ifndef CONFIG_USB_EXYNOS_SWITCH if (samsung_rev() >= EXYNOS5250_REV_1_0) { if (gpio_request_one(EXYNOS5_GPX2(6), GPIOF_OUT_INIT_HIGH, "HOST_VBUS_CONTROL")) printk(KERN_ERR "failed to request gpio_host_vbus\n"); else { s3c_gpio_setpull(EXYNOS5_GPX2(6), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPX2(6)); } } #endif s5p_ehci_set_platdata(pdata); }
void exynos5_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width) { struct s3c_sdhci_platdata *pdata = dev->dev.platform_data; unsigned int gpio; /* Set all the necessary GPK2[0:1] pins to special-function 2 */ for (gpio = EXYNOS5_GPC2(0); gpio < EXYNOS5_GPC2(2); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV4); } switch (width) { case 8: for (gpio = EXYNOS5_GPC3(3); gpio <= EXYNOS5_GPC3(6); gpio++) { /* Data pin GPK3[3:6] to special-function 3 */ s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(3)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_UP); s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV4); } case 4: for (gpio = EXYNOS5_GPC2(3); gpio <= EXYNOS5_GPC2(6); gpio++) { /* Data pin GPK2[3:6] to special-function 2 */ s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_UP); s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV4); } default: break; } if (pdata->cd_type == S3C_SDHCI_CD_INTERNAL) { s3c_gpio_cfgpin(EXYNOS5_GPC2(2), S3C_GPIO_SFN(2)); s3c_gpio_setpull(EXYNOS5_GPC2(2), S3C_GPIO_PULL_UP); s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV4); /* In SMDK5210 Rev0.0 Board, SD_CDn Pin connection have been changed by Jumper Therfore, the following GPX2[0] configuration is requiered. */ s3c_gpio_cfgpin(EXYNOS5_GPX2(0), S3C_GPIO_SFN(0)); s3c_gpio_setpull(EXYNOS5_GPX2(0), S3C_GPIO_PULL_NONE); } }
/* Convert an external interrupt number (0-31) to a Linux irq number */ static int eint_to_gpio(int eint) { if (eint < 8) return EXYNOS5_GPX0(eint & 7); else if (eint < 16) return EXYNOS5_GPX1(eint & 7); else if (eint < 24) return EXYNOS5_GPX2(eint & 7); else return EXYNOS5_GPX3(eint & 7); }
static inline int exynos5_irq_to_gpio(unsigned int irq) { if (irq < IRQ_EINT(0)) return -EINVAL; irq -= IRQ_EINT(0); if (irq < 8) return EXYNOS5_GPX0(irq); irq -= 8; if (irq < 8) return EXYNOS5_GPX1(irq); irq -= 8; if (irq < 8) return EXYNOS5_GPX2(irq); irq -= 8; if (irq < 8) return EXYNOS5_GPX3(irq); return -EINVAL; }
.ulcon = MANTA_ULCON_DEFAULT, .ufcon = MANTA_UFCON_DEFAULT, }, /* Do not initialize hwport 2, it will be handled by fiq_debugger */ [2] = { .hwport = 3, .flags = 0, .ucon = MANTA_UCON_DEFAULT, .ulcon = MANTA_ULCON_DEFAULT, .ufcon = MANTA_UFCON_DEFAULT, }, }; static struct gpio_event_direct_entry manta_keypad_key_map[] = { { .gpio = EXYNOS5_GPX2(7), .code = KEY_POWER, .dev = 0, }, { .gpio = EXYNOS5_GPX2(0), .code = KEY_VOLUMEUP, .dev = 0, }, { .gpio = EXYNOS5_GPX2(1), .code = KEY_VOLUMEDOWN, .dev = 0, } };
static void __init smdk5250_usbswitch_init(void) { struct s5p_usbswitch_platdata *pdata = &smdk5250_usbswitch_pdata; int err; /* USB 2.0 detect GPIO */ if (samsung_rev() < EXYNOS5250_REV_1_0) { pdata->gpio_device_detect = 0; pdata->gpio_host_vbus = 0; } else { pdata->gpio_host_detect = EXYNOS5_GPX1(6); err = gpio_request_one(pdata->gpio_host_detect, GPIOF_IN, "HOST_DETECT"); if (err) { printk(KERN_ERR "failed to request host gpio\n"); return; } s3c_gpio_cfgpin(pdata->gpio_host_detect, S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(pdata->gpio_host_detect, S3C_GPIO_PULL_NONE); gpio_free(pdata->gpio_host_detect); pdata->gpio_device_detect = EXYNOS5_GPX3(4); err = gpio_request_one(pdata->gpio_device_detect, GPIOF_IN, "DEVICE_DETECT"); if (err) { printk(KERN_ERR "failed to request device gpio\n"); return; } s3c_gpio_cfgpin(pdata->gpio_device_detect, S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(pdata->gpio_device_detect, S3C_GPIO_PULL_NONE); gpio_free(pdata->gpio_device_detect); pdata->gpio_host_vbus = EXYNOS5_GPX2(6); err = gpio_request_one(pdata->gpio_host_vbus, GPIOF_OUT_INIT_LOW, "HOST_VBUS_CONTROL"); if (err) { printk(KERN_ERR "failed to request host_vbus gpio\n"); return; } s3c_gpio_setpull(pdata->gpio_host_vbus, S3C_GPIO_PULL_NONE); gpio_free(pdata->gpio_host_vbus); } /* USB 3.0 DRD detect GPIO */ if (samsung_rev() < EXYNOS5250_REV_1_0) { pdata->gpio_drd_host_detect = 0; pdata->gpio_drd_device_detect = 0; } else { pdata->gpio_drd_host_detect = EXYNOS5_GPX1(7); err = gpio_request_one(pdata->gpio_drd_host_detect, GPIOF_IN, "DRD_HOST_DETECT"); if (err) { printk(KERN_ERR "failed to request drd_host gpio\n"); return; } s3c_gpio_cfgpin(pdata->gpio_drd_host_detect, S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(pdata->gpio_drd_host_detect, S3C_GPIO_PULL_NONE); gpio_free(pdata->gpio_drd_host_detect); pdata->gpio_drd_device_detect = EXYNOS5_GPX0(6); err = gpio_request_one(pdata->gpio_drd_device_detect, GPIOF_IN, "DRD_DEVICE_DETECT"); if (err) { printk(KERN_ERR "failed to request drd_device\n"); return; } s3c_gpio_cfgpin(pdata->gpio_drd_device_detect, S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(pdata->gpio_drd_device_detect, S3C_GPIO_PULL_NONE); gpio_free(pdata->gpio_drd_device_detect); } s5p_usbswitch_set_platdata(pdata); }
/* UART switch: configure as output */ {EXYNOS5_GPE0(5), S3C_GPIO_OUTPUT, 2, S3C_GPIO_PULL_NONE}, /* USB switch: configure as output */ {EXYNOS5_GPH0(1), S3C_GPIO_OUTPUT, 2, S3C_GPIO_PULL_NONE}, {EXYNOS5_GPB2(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* CODEC_SDA_1.8V */ {EXYNOS5_GPB2(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* CODEC_SCL_1.8V */ {EXYNOS5_GPX0(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* DET_3.5 */ {EXYNOS5_GPX0(2), S3C_GPIO_SFN(0xF), S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* AP_PMIC_IRQ */ {EXYNOS5_GPX2(0), S3C_GPIO_SFN(2), S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* VOL_UP */ {EXYNOS5_GPX2(1), S3C_GPIO_SFN(2), S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* VOL_DOWN */ {EXYNOS5_GPX2(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* ADC_INT */ {EXYNOS5_GPX2(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* BT_HOST_WAKE */ }; /* Initialize gpio set in p10 board */ void p10_config_gpio_table(void) { u32 i, gpio; printk(KERN_DEBUG "%s\n", __func__);