void s3c_fimc0_cfg_gpio(struct platform_device *pdev) { #if defined(CONFIG_MACH_SMDK4212) || defined(CONFIG_MACH_SMDK4210) \ || defined(CONFIG_VIDEO_S5K5BBGX) if (soc_is_exynos4210()) { /* CAM A port(b0010) : PCLK, VSYNC, HREF, DATA[0-4] */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPJ0(0), 8, S3C_GPIO_SFN(2)); /* CAM A port(b0010) : DATA[5-7], CLKOUT(MIPI CAM also), * FIELD */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPJ1(0), 5, S3C_GPIO_SFN(2)); #if !defined(CONFIG_MACH_P8LTE) || !defined(CONFIG_VIDEO_S5K5BBGX) /* CAM B port(b0011) : DATA[0-7] */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPE1(0), 8, S3C_GPIO_SFN(3)); /* CAM B port(b0011) : PCLK, VSYNC, HREF, FIELD, CLKOUT */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPE0(0), 5, S3C_GPIO_SFN(3)); #endif } else { /* CAM A port(b0010) : PCLK, VSYNC, HREF, DATA[0-4] */ s3c_gpio_cfgrange_nopull(EXYNOS4212_GPJ0(0), 8, S3C_GPIO_SFN(2)); /* CAM A port(b0010) : DATA[5-7], CLKOUT(MIPI CAM also), * FIELD */ s3c_gpio_cfgrange_nopull(EXYNOS4212_GPJ1(0), 5, S3C_GPIO_SFN(2)); /* CAM B port(b0011) : PCLK, DATA[0-6] */ s3c_gpio_cfgrange_nopull(EXYNOS4212_GPM0(0), 8, S3C_GPIO_SFN(3)); /* CAM B port(b0011) : FIELD, DATA[7]*/ s3c_gpio_cfgrange_nopull(EXYNOS4212_GPM1(0), 2, S3C_GPIO_SFN(3)); /* CAM B port(b0011) : VSYNC, HREF, CLKOUT*/ s3c_gpio_cfgrange_nopull(EXYNOS4212_GPM2(0), 3, S3C_GPIO_SFN(3)); } /* note : driver strength to max is unnecessary */ #elif defined(CONFIG_MACH_PX) /* CAM A port(b0010) : PCLK, VSYNC, HREF, DATA[0-4] */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPJ0(0), 8, S3C_GPIO_SFN(2)); /* CAM A port(b0010) : DATA[5-7], CLKOUT(MIPI CAM also), FIELD */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPJ1(0), 5, S3C_GPIO_SFN(2)); /* Disable Mclk */ s3c_gpio_cfgpin(EXYNOS4210_GPJ1(3), S3C_GPIO_INPUT); s3c_gpio_setpull(EXYNOS4210_GPJ1(3), S3C_GPIO_PULL_DOWN); #if !defined(CONFIG_MACH_P8LTE) /* CAM B port(b0011) : DATA[0-7] */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPE1(0), 8, S3C_GPIO_SFN(3)); /* CAM B port(b0011) : PCLK, VSYNC, HREF, FIELD, CLKOUT */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPE0(0), 5, S3C_GPIO_SFN(3)); #endif #endif }
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 }
void s3c_fimc0_cfg_gpio(struct platform_device *pdev) { if (soc_is_exynos4210()) { #if defined (CONFIG_MX_SERIAL_TYPE) /* CAM A port(b0010) : PCLK, VSYNC, HREF, DATA[0-4] */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPJ0(0), 8, S3C_GPIO_SFN(2)); /* CAM A port(b0010) : DATA[5-7], CLKOUT(MIPI CAM also), FIELD */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPJ1(0), 4, S3C_GPIO_SFN(2)); #else /* CAM A port(b0010) : PCLK, VSYNC, HREF, DATA[0-4] */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPJ0(0), 8, S3C_GPIO_SFN(2)); /* CAM A port(b0010) : DATA[5-7], CLKOUT(MIPI CAM also), FIELD */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPJ1(0), 5, S3C_GPIO_SFN(2)); /* CAM B port(b0011) : DATA[0-7] */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPE1(0), 8, S3C_GPIO_SFN(3)); /* CAM B port(b0011) : PCLK, VSYNC, HREF, FIELD, CLKOUT */ s3c_gpio_cfgrange_nopull(EXYNOS4210_GPE0(0), 5, S3C_GPIO_SFN(3)); #endif } else { #if defined(CONFIG_MX_SERIAL_TYPE) /* CAM A port(b0010) : PCLK, VSYNC, HREF, DATA[0-4] */ s3c_gpio_cfgrange_nopull(EXYNOS4212_GPJ0(0), 8, S3C_GPIO_SFN(2)); /* CAM A port(b0010) : DATA[5-7], CLKOUT(MIPI CAM also), FIELD */ s3c_gpio_cfgrange_nopull(EXYNOS4212_GPJ1(0), 4, S3C_GPIO_SFN(2)); /* CAM B port(b0011) : PCLK, DATA[0-6] */ s3c_gpio_cfgrange_nopull(EXYNOS4212_GPM0(0), 8, S3C_GPIO_SFN(3)); /* CAM B port(b0011) : FIELD, DATA[7]*/ s3c_gpio_cfgrange_nopull(EXYNOS4212_GPM1(0), 2, S3C_GPIO_SFN(3)); /* CAM B port(b0011) : VSYNC, HREF, CLKOUT*/ s3c_gpio_cfgrange_nopull(EXYNOS4212_GPM2(0), 3, S3C_GPIO_SFN(3)); #endif #if defined(CONFIG_MX2_SERIAL_TYPE) s3c_gpio_cfgpin(EXYNOS4212_GPJ1(3), S3C_GPIO_SFN(2)); #endif } /* note : driver strength to max is unnecessary */ }
{EXYNOS4_GPC1(1), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN}, /* NC */ {EXYNOS4_GPC1(2), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN}, /* NC */ {EXYNOS4_GPC1(3), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4_GPC1(4), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4_GPD0(0), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN}, /* NC */ {EXYNOS4_GPD0(1), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN}, /* NC */ {EXYNOS4_GPD0(2), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4_GPD0(3), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4_GPD1(0), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4_GPD1(1), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4_GPD1(2), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4_GPD1(3), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4210_GPE0(0), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN}, /* NC */ {EXYNOS4210_GPE0(1), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN}, /* NC */ {EXYNOS4210_GPE0(2), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN}, /* NC */ {EXYNOS4210_GPE0(3), S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE}, {EXYNOS4210_GPE0(4), S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE}, {EXYNOS4210_GPE1(0), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4210_GPE1(1), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4210_GPE1(2), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4210_GPE1(3), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE}, {EXYNOS4210_GPE1(4), S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE}, {EXYNOS4210_GPE1(5), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN}, /* NC */ {EXYNOS4210_GPE1(6), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN}, /* NC */ {EXYNOS4210_GPE1(7), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN}, /* NC */ {EXYNOS4210_GPE2(0), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN}, /* NC */
.base = S5P_VA_GPIO3, .chip = { .base = EXYNOS4_GPZ(0), .ngpio = EXYNOS4_GPIO_Z_NR, .label = "GPZ", }, }, }; static struct s3c_gpio_chip exynos4210_gpio_4bit[] = { { .base = (S5P_VA_GPIO1 + 0xE0), .eint_offset = 0x1C, .group = 11, .chip = { .base = EXYNOS4210_GPE0(0), .ngpio = EXYNOS4210_GPIO_E0_NR, .label = "GPE0", }, }, { .base = (S5P_VA_GPIO1 + 0x100), .eint_offset = 0x20, .group = 12, .chip = { .base = EXYNOS4210_GPE1(0), .ngpio = EXYNOS4210_GPIO_E1_NR, .label = "GPE1", }, }, { .base = (S5P_VA_GPIO1 + 0x120), .eint_offset = 0x24,