int s3c64xx_spi0_cfg_gpio(struct platform_device *dev) { int gpio; if (soc_is_exynos5410()) { s3c_gpio_cfgpin(EXYNOS5410_GPA2(0), S3C_GPIO_SFN(2)); s3c_gpio_setpull(EXYNOS5410_GPA2(0), S3C_GPIO_PULL_UP); s3c_gpio_cfgall_range(EXYNOS5410_GPA2(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); for (gpio = EXYNOS5410_GPA2(0); gpio < EXYNOS5410_GPA2(4); gpio++) s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV3); } else if (soc_is_exynos5250()) { s3c_gpio_cfgpin(EXYNOS5_GPA2(0), S3C_GPIO_SFN(2)); s3c_gpio_setpull(EXYNOS5_GPA2(0), S3C_GPIO_PULL_UP); s3c_gpio_cfgall_range(EXYNOS5_GPA2(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); for (gpio = EXYNOS5_GPA2(0); gpio < EXYNOS5_GPA2(4); gpio++) s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV3); } else { s3c_gpio_cfgpin(EXYNOS4_GPB(0), S3C_GPIO_SFN(2)); s3c_gpio_setpull(EXYNOS4_GPB(0), S3C_GPIO_PULL_UP); s3c_gpio_cfgall_range(EXYNOS4_GPB(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); for (gpio = EXYNOS4_GPB(0); gpio < EXYNOS4_GPB(4); gpio++) s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV3); } return 0; }
void s3c_i2c4_cfg_gpio(struct platform_device *dev) { if (soc_is_exynos4210()) s3c_gpio_cfgall_range(EXYNOS4_GPB(2), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); else if (soc_is_exynos4212() || soc_is_exynos4412() || soc_is_exynos4415()) s3c_gpio_cfgall_range(EXYNOS4_GPB(0), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); else if (soc_is_exynos5250()) s3c_gpio_cfgall_range(EXYNOS5_GPA2(0), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); else if (soc_is_exynos5260()) s3c_gpio_cfgall_range(EXYNOS5260_GPB5(0), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else if (soc_is_exynos3250()) s3c_gpio_cfgall_range(EXYNOS3_GPB(0), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); else pr_err("failed to configure gpio for i2c4\n"); }
/* Since we emulate multi-cs capability, we do not touch the CS. * The emulated CS is toggled by board specific mechanism, as it can * be either some immediate GPIO or some signal out of some other * chip in between ... or some yet another way. * We simply do not assume anything about CS. */ static int s5pc100_spi_cfg_gpio(struct platform_device *pdev) { switch (pdev->id) { case 0: s3c_gpio_cfgall_range(S5PC100_GPB(0), 3, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); break; case 1: s3c_gpio_cfgall_range(S5PC100_GPB(4), 3, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); break; case 2: s3c_gpio_cfgpin(S5PC100_GPG3(0), S3C_GPIO_SFN(3)); s3c_gpio_setpull(S5PC100_GPG3(0), S3C_GPIO_PULL_UP); s3c_gpio_cfgall_range(S5PC100_GPB(2), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); break; default: dev_err(&pdev->dev, "Invalid SPI Controller number!"); return -EINVAL; } return 0; }
void s3c_i2c6_cfg_gpio(struct platform_device *dev) { if (soc_is_exynos5210() || soc_is_exynos5250()) s3c_gpio_cfgall_range(EXYNOS5_GPB1(3), 2, S3C_GPIO_SFN(4), S3C_GPIO_PULL_UP); else s3c_gpio_cfgall_range(EXYNOS4_GPC1(3), 2, S3C_GPIO_SFN(4), S3C_GPIO_PULL_UP); }
int exynos4_fimc_setup_gpio(enum s5p_camport_id id) { u32 gpio8, gpio5; u32 sfn; s5p_gpio_drvstr_t drv_tmp = S5P_GPIO_DRVSTR_LV4; int i = 0; int ret; switch (id) { case S5P_CAMPORT_A: gpio8 = EXYNOS4210_GPJ0(0); /* PCLK, VSYNC, HREF, DATA[0:4] */ gpio5 = EXYNOS4210_GPJ1(0); /* DATA[5:7], CLKOUT, FIELD */ sfn = S3C_GPIO_SFN(2); break; case S5P_CAMPORT_B: gpio8 = EXYNOS4210_GPE0(0); /* DATA[0:7] */ gpio5 = EXYNOS4210_GPE1(0); /* PCLK, VSYNC, HREF, CLKOUT, FIELD */ sfn = S3C_GPIO_SFN(3); break; default: WARN(1, "Wrong camport id: %d\n", id); return -EINVAL; } ret = s3c_gpio_cfgall_range(gpio8, 8, sfn, S3C_GPIO_PULL_UP); if (ret) return ret; #if 1 // if(id==S5P_CAMPORT_A) { s5p_gpio_set_drvstr(EXYNOS4210_GPJ0(0), drv_tmp); s5p_gpio_set_drvstr(EXYNOS4210_GPJ0(1), drv_tmp); s5p_gpio_set_drvstr(EXYNOS4210_GPJ0(2), drv_tmp); s5p_gpio_set_drvstr(EXYNOS4210_GPJ0(3), drv_tmp); s5p_gpio_set_drvstr(EXYNOS4210_GPJ0(4), drv_tmp); s5p_gpio_set_drvstr(EXYNOS4210_GPJ0(5), drv_tmp); s5p_gpio_set_drvstr(EXYNOS4210_GPJ0(6), drv_tmp); s5p_gpio_set_drvstr(EXYNOS4210_GPJ0(7), drv_tmp); } s3c_gpio_cfgall_range(gpio5, 5, sfn, S3C_GPIO_PULL_UP); if(id==S5P_CAMPORT_A) { s5p_gpio_set_drvstr(EXYNOS4210_GPJ1(0), drv_tmp); s5p_gpio_set_drvstr(EXYNOS4210_GPJ1(1), drv_tmp); s5p_gpio_set_drvstr(EXYNOS4210_GPJ1(2), drv_tmp); s5p_gpio_set_drvstr(EXYNOS4210_GPJ1(3), drv_tmp); } return 0; #else return s3c_gpio_cfgall_range(gpio5, 5, sfn, S3C_GPIO_PULL_UP); #endif }
int s3c64xx_spi1_cfg_gpio(struct platform_device *dev) { if (soc_is_s5p6450()) s3c_gpio_cfgall_range(S5P6450_GPC(4), 3, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else s3c_gpio_cfgall_range(S5P6440_GPC(4), 3, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); return 0; }
void s3c_i2c0_cfg_gpio(struct platform_device *dev) { if (soc_is_exynos5250()) s3c_gpio_cfgall_range(EXYNOS5_GPB3(0), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else /* EXYNOS4210, EXYNOS4212, EXYNOS4412 and EXYNOS4270 */ s3c_gpio_cfgall_range(EXYNOS4_GPD1(0), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); }
void exynos5_hs_i2c2_cfg_gpio(struct platform_device *dev) { if (soc_is_exynos5250()) s3c_gpio_cfgall_range(EXYNOS5_GPA0(6), 2, S3C_GPIO_SFN(4), S3C_GPIO_PULL_UP); else if (soc_is_exynos5410()) s3c_gpio_cfgall_range(EXYNOS5410_GPB1(3), 2, S3C_GPIO_SFN(4), S3C_GPIO_PULL_UP); else pr_err("failed to configure gpio for hs-i2c2\n"); }
void s3c_i2c5_cfg_gpio(struct platform_device *dev) { if (soc_is_exynos4210()) s3c_gpio_cfgall_range(EXYNOS4_GPB(6), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); else if (soc_is_exynos4212()) s3c_gpio_cfgall_range(EXYNOS4_GPB(2), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); else s3c_gpio_cfgall_range(EXYNOS5_GPA2(2), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); }
void s3c_i2c1_cfg_gpio(struct platform_device *dev) { #if defined(CONFIG_MACH_TINY4412) s3c_gpio_cfgall_range(EXYNOS4_GPD1(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_NONE); #else if (soc_is_exynos5210() || soc_is_exynos5250()) s3c_gpio_cfgall_range(EXYNOS5_GPB3(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else s3c_gpio_cfgall_range(EXYNOS4_GPD1(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); #endif }
void s3c_i2c0_cfg_gpio(struct platform_device *dev) { if (soc_is_exynos5210() || soc_is_exynos5250()) s3c_gpio_cfgall_range(EXYNOS5_GPB3(0), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else { s3c_gpio_cfgall_range(EXYNOS4_GPD1(0), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); #if defined(CONFIG_TARGET_TAB3_3G8) || defined(CONFIG_TARGET_TAB3_LTE8) s5p_gpio_set_drvstr(EXYNOS4_GPD1(0), S5P_GPIO_DRVSTR_LV3); s5p_gpio_set_drvstr(EXYNOS4_GPD1(1), S5P_GPIO_DRVSTR_LV3); #endif } }
static void lcd_gpio_cfg(int onoff) { if (onoff) { lcd_gpio_setup(EXYNOS4_GPF0(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV2); lcd_gpio_setup(EXYNOS4_GPF1(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV2); lcd_gpio_setup(EXYNOS4_GPF2(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV2); lcd_gpio_setup(EXYNOS4_GPF3(0), 4, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV2); } else { s3c_gpio_cfgall_range(EXYNOS4_GPF0(0), 8, S3C_GPIO_INPUT, S3C_GPIO_PULL_DOWN); s3c_gpio_cfgall_range(EXYNOS4_GPF1(0), 8, S3C_GPIO_INPUT, S3C_GPIO_PULL_DOWN); s3c_gpio_cfgall_range(EXYNOS4_GPF2(0), 8, S3C_GPIO_INPUT, S3C_GPIO_PULL_DOWN); s3c_gpio_cfgall_range(EXYNOS4_GPF3(0), 4, S3C_GPIO_INPUT, S3C_GPIO_PULL_DOWN); } }
static int s3c2412_i2s_probe(struct snd_soc_dai *dai) { int ret; pr_debug("Entered %s\n", __func__); snd_soc_dai_init_dma_data(dai, &s3c2412_i2s_pcm_stereo_out, &s3c2412_i2s_pcm_stereo_in); ret = s3c_i2sv2_probe(dai, &s3c2412_i2s, S3C2410_PA_IIS); if (ret) return ret; s3c2412_i2s.dma_capture = &s3c2412_i2s_pcm_stereo_in; s3c2412_i2s.dma_playback = &s3c2412_i2s_pcm_stereo_out; s3c2412_i2s.iis_cclk = devm_clk_get(dai->dev, "i2sclk"); if (IS_ERR(s3c2412_i2s.iis_cclk)) { pr_err("failed to get i2sclk clock\n"); return PTR_ERR(s3c2412_i2s.iis_cclk); } /* Set MPLL as the source for IIS CLK */ clk_set_parent(s3c2412_i2s.iis_cclk, clk_get(NULL, "mpll")); clk_prepare_enable(s3c2412_i2s.iis_cclk); s3c2412_i2s.iis_cclk = s3c2412_i2s.iis_pclk; /* Configure the I2S pins (GPE0...GPE4) in correct mode */ s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2), S3C_GPIO_PULL_NONE); return 0; }
static int s3c24xx_i2s_probe(struct snd_soc_dai *dai) { pr_debug("Entered %s\n", __func__); samsung_asoc_init_dma_data(dai, &s3c24xx_i2s_pcm_stereo_out, &s3c24xx_i2s_pcm_stereo_in); s3c24xx_i2s.iis_clk = devm_clk_get(dai->dev, "iis"); if (IS_ERR(s3c24xx_i2s.iis_clk)) { pr_err("failed to get iis_clock\n"); return PTR_ERR(s3c24xx_i2s.iis_clk); } clk_prepare_enable(s3c24xx_i2s.iis_clk); /* Configure the I2S pins (GPE0...GPE4) in correct mode */ s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2), S3C_GPIO_PULL_NONE); writel(S3C2410_IISCON_IISEN, s3c24xx_i2s.regs + S3C2410_IISCON); s3c24xx_snd_txctrl(0); s3c24xx_snd_rxctrl(0); return 0; }
int s3c64xx_spi1_cfg_gpio(struct platform_device *dev) { s3c_gpio_cfgpin(S5PV210_GPB(4), S3C_GPIO_SFN(2)); s3c_gpio_setpull(S5PV210_GPB(4), S3C_GPIO_PULL_UP); s3c_gpio_cfgall_range(S5PV210_GPB(6), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); return 0; }
int s3c64xx_spi2_cfg_gpio(struct platform_device *dev) { s3c_gpio_cfgpin(EXYNOS4_GPC1(1), S3C_GPIO_SFN(5)); s3c_gpio_setpull(EXYNOS4_GPC1(1), S3C_GPIO_PULL_UP); s3c_gpio_cfgall_range(EXYNOS4_GPC1(3), 2, S3C_GPIO_SFN(5), S3C_GPIO_PULL_UP); return 0; }
int s3c64xx_spi2_cfg_gpio(struct platform_device *dev) { s3c_gpio_cfgpin(S5PC100_GPG3(0), S3C_GPIO_SFN(3)); s3c_gpio_setpull(S5PC100_GPG3(0), S3C_GPIO_PULL_UP); s3c_gpio_cfgall_range(S5PC100_GPB(2), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); return 0; }
int s3c64xx_spi2_cfg_gpio(void) { s3c_gpio_cfgpin(S5PC100_GPG3(0), S3C_GPIO_SFN(3)); s3c_gpio_setpull(S5PC100_GPG3(0), S3C_GPIO_PULL_UP); s3c_gpio_cfgall_range(S5PC100_GPB(2), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); return 0; }
int s3c64xx_spi1_cfg_gpio(void) { s3c_gpio_cfgpin(S5PV210_GPB(4), S3C_GPIO_SFN(2)); s3c_gpio_setpull(S5PV210_GPB(4), S3C_GPIO_PULL_UP); s3c_gpio_cfgall_range(S5PV210_GPB(6), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); return 0; }
void s3c_i2c0_cfg_gpio(struct platform_device *dev) { if (soc_is_exynos5250()) return; s3c_gpio_cfgall_range(EXYNOS4_GPD1(0), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); }
void s3c_i2c0_cfg_gpio(struct platform_device *dev) { if (soc_is_exynos5250()) /* will be implemented with gpio function */ return; s3c_gpio_cfgall_range(EXYNOS4_GPD1(0), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); }
void samsung_keypad_cfg_gpio(unsigned int rows, unsigned int cols) { /* hcj: the rows may need pullup */ /* Set all the necessary GPH3 pins to special-function 3: KP_ROW[x] */ // s3c_gpio_cfgrange_nopull(S5PV210_GPH3(0), rows, S3C_GPIO_SFN(3)); s3c_gpio_cfgall_range(S5PV210_GPH3(0), rows, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); /* Set all the necessary GPH2 pins to special-function 3: KP_COL[x] */ s3c_gpio_cfgrange_nopull(S5PV210_GPH2(0), cols, S3C_GPIO_SFN(3)); }
int s3c64xx_spi0_cfg_gpio(struct platform_device *pdev) { /* enable hsspi bit in misccr */ s3c2410_modify_misccr(S3C2416_MISCCR_HSSPI_EN2, 1); s3c_gpio_cfgall_range(S3C2410_GPE(11), 3, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); return 0; }
void samsung_keypad_cfg_gpio(unsigned int rows, unsigned int cols) { if (rows > 8) { s3c_gpio_cfgall_range(EXYNOS4_GPX2(0), 8, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); s3c_gpio_cfgall_range(EXYNOS4_GPX3(0), (rows - 8), S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); } else { s3c_gpio_cfgall_range(EXYNOS4_GPX2(0), rows, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); } s3c_gpio_cfgrange_nopull(EXYNOS4_GPX1(0), cols, S3C_GPIO_SFN(3)); }
void samsung_keypad_cfg_gpio(unsigned int rows, unsigned int cols) { /* Keypads can be of various combinations, Just making sure */ if (rows > 8) { /* Set all the necessary GPX2 pins: KP_ROW[0~7] */ s3c_gpio_cfgall_range(EXYNOS4_GPX2(0), 8, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); /* Set all the necessary GPX3 pins: KP_ROW[8~] */ s3c_gpio_cfgall_range(EXYNOS4_GPX3(0), (rows - 8), S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); } else { /* Set all the necessary GPX2 pins: KP_ROW[x] */ s3c_gpio_cfgall_range(EXYNOS4_GPX2(0), rows, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); } /* Set all the necessary GPX1 pins to special-function 3: KP_COL[x] */ s3c_gpio_cfgrange_nopull(EXYNOS4_GPX1(0), cols, S3C_GPIO_SFN(3)); }
void s3c_i2c1_cfg_gpio(struct platform_device *dev) { if (soc_is_exynos5250()) s3c_gpio_cfgall_range(EXYNOS5_GPB3(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else if (soc_is_exynos5260()) s3c_gpio_cfgall_range(EXYNOS5260_GPB4(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else if (soc_is_exynos5410()) s3c_gpio_cfgall_range(EXYNOS5410_GPB3(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else if (soc_is_exynos5420()) s3c_gpio_cfgall_range(EXYNOS5420_GPB3(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else if (soc_is_exynos3250()) s3c_gpio_cfgall_range(EXYNOS3_GPD1(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else /* EXYNOS4210, EXYNOS4212, and EXYNOS4412 */ s3c_gpio_cfgall_range(EXYNOS4_GPD1(2), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); }
void samsung_keypad_cfg_gpio(unsigned int rows, unsigned int cols) { /* Keypads can be of various combinations, Just making sure */ #if defined(CONFIG_CPU_TYPE_SCP_SUPPER) || defined(CONFIG_CPU_TYPE_POP_SUPPER) || defined(CONFIG_CPU_TYPE_POP2G_SUPPER) /* Set all the necessary GPX2 pins: KP_ROW[x] */ s3c_gpio_cfgall_range(EXYNOS4_GPX2(0), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); /*GPL2: KP_COL[x] */ s3c_gpio_cfgrange_nopull(EXYNOS4_GPL2(0), 1, S3C_GPIO_SFN(3)); #elif defined(CONFIG_CPU_TYPE_SCP_ELITE) || defined(CONFIG_CPU_TYPE_POP_ELITE) || defined(CONFIG_CPU_TYPE_POP2G_ELITE) //ROW_6 s3c_gpio_cfgall_range(EXYNOS4_GPX2(6), 1, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); //ROW_7 s3c_gpio_cfgall_range(EXYNOS4_GPX2(7), 1, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); //ROW_8 s3c_gpio_cfgall_range(EXYNOS4_GPX3(0), 1, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); //ROW_13 s3c_gpio_cfgall_range(EXYNOS4_GPX3(5), 1, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); //COL_0 s3c_gpio_cfgrange_nopull(EXYNOS4_GPX1(0), 1, S3C_GPIO_SFN(3)); //COL_3 s3c_gpio_cfgrange_nopull(EXYNOS4_GPX1(3), 1, S3C_GPIO_SFN(3)); //COL_5 s3c_gpio_cfgrange_nopull(EXYNOS4_GPX1(5), 1, S3C_GPIO_SFN(3)); //COL_6 s3c_gpio_cfgrange_nopull(EXYNOS4_GPX1(6), 1, S3C_GPIO_SFN(3)); #endif }
void s3c_i2c0_cfg_gpio(struct platform_device *dev) { if (soc_is_exynos5250()) s3c_gpio_cfgall_range(EXYNOS5_GPB3(0), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else if (soc_is_exynos5410()) s3c_gpio_cfgall_range(EXYNOS5410_GPB3(0), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else if (soc_is_exynos5420()) s3c_gpio_cfgall_range(EXYNOS5420_GPB3(0), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); else /* EXYNOS4210, EXYNOS4212, and EXYNOS4412 */ s3c_gpio_cfgall_range(EXYNOS4_GPD1(0), 2, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); if (soc_is_exynos5420()) { s5p_gpio_set_drvstr(EXYNOS5_GPB3(0), S5P_GPIO_DRVSTR_LV4); s5p_gpio_set_drvstr(EXYNOS5_GPB3(1), S5P_GPIO_DRVSTR_LV4); } }
/* Since we emulate multi-cs capability, we do not touch the GPC-3,7. * The emulated CS is toggled by board specific mechanism, as it can * be either some immediate GPIO or some signal out of some other * chip in between ... or some yet another way. * We simply do not assume anything about CS. */ static int s3c64xx_spi_cfg_gpio(struct platform_device *pdev) { unsigned int base; switch (pdev->id) { case 0: base = S3C64XX_GPC(0); break; case 1: base = S3C64XX_GPC(4); break; default: dev_err(&pdev->dev, "Invalid SPI Controller number!"); return -EINVAL; } s3c_gpio_cfgall_range(base, 3, S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP); return 0; }
void s3c_i2c7_cfg_gpio(struct platform_device *dev) { s3c_gpio_cfgall_range(EXYNOS4_GPD0(2), 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); }