void wimax_on_pin_conf(int onoff) { int gpio; if (onoff) { for (gpio = S5PV310_GPK3(0); gpio < S5PV310_GPK3(2); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } for (gpio = S5PV310_GPK3(3); gpio <= S5PV310_GPK3(6); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } } else { for (gpio = S5PV310_GPK3(0); gpio < S5PV310_GPK3(2); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_DOWN); } for (gpio = S5PV310_GPK3(3); gpio <= S5PV310_GPK3(6); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } } }
void s5pv310_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width) { unsigned int gpio; /* Set all the necessary GPK2[0:1] pins to special-function 2 */ for (gpio = S5PV310_GPK2(0); gpio < S5PV310_GPK2(2); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } switch (width) { case 8: /* Data pin GPK3[3:6] to special-function 3 */ for (gpio = S5PV310_GPK3(3); gpio <= S5PV310_GPK3(6); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(3)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } __raw_writel(0x1555, GPK3DRV); case 4: /* Data pin GPK2[3:6] to special-function 2 */ for (gpio = S5PV310_GPK2(3); gpio <= S5PV310_GPK2(6); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } __raw_writel(0x1555, GPK2DRV); break; case 1: /* Data pin GPK2[3] to special-function 2 */ for (gpio = S5PV310_GPK2(3); gpio < S5PV310_GPK2(4); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } __raw_writel(0x55, GPK2DRV); default: break; } }
}, }, { .chip = { .base = S5PV310_GPK1(0), .ngpio = S5PV310_GPIO_K1_NR, .label = "GPK1", }, }, { .chip = { .base = S5PV310_GPK2(0), .ngpio = S5PV310_GPIO_K2_NR, .label = "GPK2", }, }, { .chip = { .base = S5PV310_GPK3(0), .ngpio = S5PV310_GPIO_K3_NR, .label = "GPK3", }, }, { .chip = { .base = S5PV310_GPL0(0), .ngpio = S5PV310_GPIO_L0_NR, .label = "GPL0", }, }, { .chip = { .base = S5PV310_GPL1(0), .ngpio = S5PV310_GPIO_L1_NR, .label = "GPL1", },
void s5pv310_setup_sdhci3_cfg_gpio(struct platform_device *dev, int width) { unsigned int gpio; #if defined(CONFIG_WIMAX_CMC) && defined(CONFIG_TARGET_LOCALE_NA) if(gpio_get_value(GPIO_WIMAX_EN)) { /* Set all the necessary GPK1[0:1] pins to special-function 2 */ for (gpio = S5PV310_GPK3(0); gpio < S5PV310_GPK3(2); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } /* Data pin GPK1[3:6] to special-function 2 */ for (gpio = S5PV310_GPK3(3); gpio <= S5PV310_GPK3(6); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } //__raw_writel(0x3FFF, GPK3DRV); __raw_writel(0x2AAA, GPK3DRV); // for sdio noise for (gpio = S5PV310_GPK3(0); gpio < S5PV310_GPK3(2); gpio++) { s3c_gpio_slp_cfgpin(gpio,S3C_GPIO_SLP_INPUT ); s3c_gpio_slp_setpull_updown(gpio,S3C_GPIO_PULL_NONE ); } for (gpio = S5PV310_GPK3(3); gpio < S5PV310_GPK3(6); gpio++) { s3c_gpio_slp_cfgpin(gpio,S3C_GPIO_SLP_INPUT ); s3c_gpio_slp_setpull_updown(gpio,S3C_GPIO_PULL_NONE ); } } else { /* Set all the necessary GPK1[0:1] to Input pull down for power saving */ for (gpio = S5PV310_GPK3(0); gpio < S5PV310_GPK3(2); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_DOWN); } /* Data pin GPK1[3:6] to Input pull down for power saving */ for (gpio = S5PV310_GPK3(3); gpio <= S5PV310_GPK3(6); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_DOWN); } for (gpio = S5PV310_GPK3(0); gpio < S5PV310_GPK3(2); gpio++) { s3c_gpio_slp_cfgpin(gpio,S3C_GPIO_SLP_INPUT ); s3c_gpio_slp_setpull_updown(gpio,S3C_GPIO_PULL_DOWN ); } for (gpio = S5PV310_GPK3(3); gpio < S5PV310_GPK3(6); gpio++) { s3c_gpio_slp_cfgpin(gpio,S3C_GPIO_SLP_INPUT ); s3c_gpio_slp_setpull_updown(gpio,S3C_GPIO_PULL_DOWN ); } } #else /* Set all the necessary GPK1[0:1] pins to special-function 2 */ for (gpio = S5PV310_GPK3(0); gpio < S5PV310_GPK3(2); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } /* Data pin GPK1[3:6] to special-function 2 */ for (gpio = S5PV310_GPK3(3); gpio <= S5PV310_GPK3(6); gpio++) { s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); } //__raw_writel(0x3FFF, GPK3DRV); __raw_writel(0x2AAA, GPK3DRV); // for sdio noise #endif }