static int smdk5250_cam1_reset(int dummy) { int err; /* Camera A */ err = gpio_request(EXYNOS5_GPX1(0), "GPX1"); if (err) printk(KERN_ERR "#### failed to request GPX1_2 ####\n"); s3c_gpio_setpull(EXYNOS5_GPX1(0), S3C_GPIO_PULL_NONE); gpio_direction_output(EXYNOS5_GPX1(0), 0); gpio_direction_output(EXYNOS5_GPX1(0), 1); gpio_free(EXYNOS5_GPX1(0)); return 0; }
/* 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; }
}, { .gpio = EXYNOS5_GPX2(0), .code = KEY_VOLUMEUP, .dev = 0, }, { .gpio = EXYNOS5_GPX2(1), .code = KEY_VOLUMEDOWN, .dev = 0, } }; static struct gpio_event_direct_entry manta_switch_map[] = { { .gpio = EXYNOS5_GPX1(3), .code = SW_LID, .dev = 1, } }; static struct gpio_event_input_info manta_keypad_key_info = { .info.func = gpio_event_input_func, .info.no_suspend = true, .debounce_time.tv64 = 5 * NSEC_PER_MSEC, .type = EV_KEY, .keymap = manta_keypad_key_map, .keymap_size = ARRAY_SIZE(manta_keypad_key_map) }; static struct gpio_event_input_info manta_switch_info = {
void exynos5_fimc_is_cfg_gpio(struct platform_device *pdev) { int ret; /* 1. UART setting for FIMC-IS */ ret = gpio_request(GPIO_5M_nRST, "GPIO_5M_nRST"); if (ret) printk(KERN_ERR "#### failed to request GPIO_5M_nRST ####\n"); s3c_gpio_cfgpin(GPIO_5M_nRST, (0x2<<0)); s3c_gpio_setpull(GPIO_5M_nRST, S3C_GPIO_PULL_NONE); gpio_free(GPIO_5M_nRST); #if defined(CONFIG_MACH_P11) || defined(CONFIG_MACH_P10) #else ret = gpio_request(EXYNOS5_GPE0(1), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_1 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(1), (0x2<<4)); s3c_gpio_setpull(EXYNOS5_GPE0(1), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(1)); ret = gpio_request(EXYNOS5_GPE0(2), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_2 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(2), (0x3<<8)); s3c_gpio_setpull(EXYNOS5_GPE0(2), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(2)); ret = gpio_request(EXYNOS5_GPE0(3), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_3 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(3), (0x3<<12)); s3c_gpio_setpull(EXYNOS5_GPE0(3), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(3)); ret = gpio_request(EXYNOS5_GPE0(4), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_4 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(4), (0x3<<16)); s3c_gpio_setpull(EXYNOS5_GPE0(4), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(4)); ret = gpio_request(EXYNOS5_GPE0(5), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_5 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(5), (0x3<<20)); s3c_gpio_setpull(EXYNOS5_GPE0(5), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(5)); ret = gpio_request(EXYNOS5_GPE0(6), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_6 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(6), (0x3<<24)); s3c_gpio_setpull(EXYNOS5_GPE0(6), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(6)); #endif ret = gpio_request(GPIO_ISP_TXD, "GPIO_ISP_TXD"); if (ret) printk(KERN_ERR "#### failed to request GPIO_ISP_TXD ####\n"); s3c_gpio_cfgpin(GPIO_ISP_TXD, (0x3<<28)); s3c_gpio_setpull(GPIO_ISP_TXD, S3C_GPIO_PULL_NONE); gpio_free(GPIO_ISP_TXD); #if defined(CONFIG_MACH_P11) || defined(CONFIG_MACH_P10) #else ret = gpio_request(EXYNOS5_GPE1(0), "GPE1"); if (ret) printk(KERN_ERR "#### failed to request GPE1_0 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE1(0), (0x3<<0)); s3c_gpio_setpull(EXYNOS5_GPE1(0), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE1(0)); #endif ret = gpio_request(GPIO_ISP_RXD, "GPIO_ISP_RXD"); if (ret) printk(KERN_ERR "#### failed to request GPIO_ISP_RXD ####\n"); s3c_gpio_cfgpin(GPIO_ISP_RXD, (0x3<<4)); s3c_gpio_setpull(GPIO_ISP_RXD, S3C_GPIO_PULL_NONE); gpio_free(GPIO_ISP_RXD); /* 2. GPIO setting for FIMC-IS */ ret = gpio_request(GPIO_5M_CAM_SDA_18V, "GPIO_5M_CAM_SDA_18V"); if (ret) printk(KERN_ERR "#### failed to request GPIO_5M_CAM_SDA_18V ####\n"); s3c_gpio_cfgpin(GPIO_5M_CAM_SDA_18V, (0x2<<0)); s3c_gpio_setpull(GPIO_5M_CAM_SDA_18V, S3C_GPIO_PULL_NONE); gpio_free(GPIO_5M_CAM_SDA_18V); ret = gpio_request(GPIO_5M_CAM_SCL_18V, "GPIO_5M_CAM_SCL_18V"); if (ret) printk(KERN_ERR "#### failed to request GPIO_5M_CAM_SCL_18V ####\n"); s3c_gpio_cfgpin(GPIO_5M_CAM_SCL_18V, (0x2<<4)); s3c_gpio_setpull(GPIO_5M_CAM_SCL_18V, S3C_GPIO_PULL_NONE); gpio_free(GPIO_5M_CAM_SCL_18V); ret = gpio_request(GPIO_VT_CAM_SDA_18V, "GPIO_VT_CAM_SDA_18V"); if (ret) printk(KERN_ERR "#### failed to request GPIO_VT_CAM_SDA_18V ####\n"); s3c_gpio_cfgpin(GPIO_VT_CAM_SDA_18V, (0x2<<8)); s3c_gpio_setpull(GPIO_VT_CAM_SDA_18V, S3C_GPIO_PULL_NONE); gpio_free(GPIO_VT_CAM_SDA_18V); ret = gpio_request(GPIO_VT_CAM_SCL_18V, "GPIO_VT_CAM_SCL_18V"); if (ret) printk(KERN_ERR "#### failed to request GPIO_5M_CAM_SDA_18V ####\n"); s3c_gpio_cfgpin(GPIO_VT_CAM_SCL_18V, (0x2<<12)); s3c_gpio_setpull(GPIO_VT_CAM_SCL_18V, S3C_GPIO_PULL_NONE); gpio_free(GPIO_VT_CAM_SCL_18V); ret = gpio_request(GPIO_CMC_CLK_18V, "GPIO_CMC_CLK_18V"); if (ret) printk(KERN_ERR "#### failed to request GPIO_CMC_CLK_18V ####\n"); s3c_gpio_cfgpin(GPIO_CMC_CLK_18V, (0x3<<0)); s3c_gpio_setpull(GPIO_CMC_CLK_18V, S3C_GPIO_PULL_NONE); gpio_free(GPIO_CMC_CLK_18V); ret = gpio_request(GPIO_CMC_CS_18V, "GPIO_CMC_CS_18V"); if (ret) printk(KERN_ERR "#### failed to request GPIO_CMC_CS_18V ####\n"); s3c_gpio_cfgpin(GPIO_CMC_CS_18V, (0x3<<4)); s3c_gpio_setpull(GPIO_CMC_CS_18V, S3C_GPIO_PULL_NONE); gpio_free(GPIO_CMC_CS_18V); /* CAM A port(b0010) : CLK_OUT */ s3c_gpio_cfgrange_nopull(GPIO_CAM_MCLK, 1, S3C_GPIO_SFN(2)); #if defined(CONFIG_MACH_P11) || defined(CONFIG_MACH_P10) /* power_on */ cam_power_on(); /* CAM A port : POWER */ s3c_gpio_cfgpin(GPIO_CAM_IO_EN, S3C_GPIO_OUTPUT); s3c_gpio_setpull(GPIO_CAM_IO_EN, S3C_GPIO_PULL_NONE); gpio_set_value(GPIO_CAM_IO_EN, 1); /* CAM A reset*/ ret = gpio_request(GPIO_5M_nRST, "GPIO_5M_nRST"); if (ret) printk(KERN_ERR "#### failed to request GPIO_5M_nRST ####\n"); s3c_gpio_setpull(GPIO_5M_nRST, S3C_GPIO_PULL_NONE); gpio_direction_output(GPIO_5M_nRST, 0); gpio_direction_output(GPIO_5M_nRST, 1); gpio_free(GPIO_5M_nRST); #else /* CAM A port(b0010) : DATA[0-7] */ /* s3c_gpio_cfgrange_nopull(EXYNOS5_GPH1(0), 8, S3C_GPIO_SFN(2)); */ /* Camera A */ ret = gpio_request(EXYNOS5_GPX1(2), "GPX1"); if (ret) printk(KERN_ERR "#### failed to request GPX1_2 ####\n"); s3c_gpio_setpull(EXYNOS5_GPX1(2), S3C_GPIO_PULL_NONE); gpio_direction_output(EXYNOS5_GPX1(2), 0); gpio_direction_output(EXYNOS5_GPX1(2), 1); gpio_free(EXYNOS5_GPX1(2)); #endif }
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); }
#ifdef CONFIG_ITU_B .set_power = smdk5250_cam1_reset, #endif }; static struct i2c_board_info s5k4ba_info = { I2C_BOARD_INFO("S5K4BA", 0x2d), .platform_data = &s5k4ba_mbus_plat, }; #endif /* 1 MIPI Cameras */ #ifdef CONFIG_VIDEO_M5MOLS static struct m5mols_platform_data m5mols_platdata = { #ifdef CONFIG_CSI_C .gpio_rst = EXYNOS5_GPX1(2), /* ISP_RESET */ #endif #ifdef CONFIG_CSI_D .gpio_rst = EXYNOS5_GPX1(0), /* ISP_RESET */ #endif .enable_rst = true, /* positive reset */ .irq = IRQ_EINT(22), }; static struct i2c_board_info m5mols_board_info = { I2C_BOARD_INFO("M5MOLS", 0x1F), .platform_data = &m5mols_platdata, }; #endif #endif /* CONFIG_VIDEO_EXYNOS_FIMC_LITE */
static int mipi_lcd_power_control(struct mipi_dsim_device *dsim, unsigned int power) { /* reset */ gpio_request_one(EXYNOS5_GPX1(7), GPIOF_OUT_INIT_HIGH, "GPX1"); if (power) { /* fire nRESET on power up */ gpio_set_value(EXYNOS5_GPX1(7), 0); mdelay(20); gpio_set_value(EXYNOS5_GPX1(7), 1); mdelay(20); gpio_free(EXYNOS5_GPX1(7)); } else { /* fire nRESET on power off */ gpio_set_value(EXYNOS5_GPX1(7), 0); mdelay(20); gpio_set_value(EXYNOS5_GPX1(7), 1); mdelay(20); gpio_free(EXYNOS5_GPX1(7)); } mdelay(20); /* power */ gpio_request_one(EXYNOS5_GPX1(4), GPIOF_OUT_INIT_LOW, "GPX1"); if (power) { /* fire nRESET on power up */ gpio_set_value(EXYNOS5_GPX1(4), 1); gpio_free(EXYNOS5_GPX1(4)); } else { /* fire nRESET on power off */ gpio_set_value(EXYNOS5_GPX1(4), 0); gpio_free(EXYNOS5_GPX1(4)); } return 1; }
/*------------------------------------------------------*/ void exynos5_fimc_is_cfg_gpio(struct platform_device *pdev) { int ret; /* 1. UART setting for FIMC-IS */ ret = gpio_request(EXYNOS5_GPE0(0), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_0 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(0), (0x2<<0)); s3c_gpio_setpull(EXYNOS5_GPE0(0), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(0)); ret = gpio_request(EXYNOS5_GPE0(1), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_1 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(1), (0x2<<4)); s3c_gpio_setpull(EXYNOS5_GPE0(1), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(1)); ret = gpio_request(EXYNOS5_GPE0(2), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_2 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(2), (0x3<<8)); s3c_gpio_setpull(EXYNOS5_GPE0(2), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(2)); ret = gpio_request(EXYNOS5_GPE0(3), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_3 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(3), (0x3<<12)); s3c_gpio_setpull(EXYNOS5_GPE0(3), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(3)); ret = gpio_request(EXYNOS5_GPE0(4), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_4 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(4), (0x3<<16)); s3c_gpio_setpull(EXYNOS5_GPE0(4), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(4)); ret = gpio_request(EXYNOS5_GPE0(5), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_5 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(5), (0x3<<20)); s3c_gpio_setpull(EXYNOS5_GPE0(5), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(5)); ret = gpio_request(EXYNOS5_GPE0(6), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_6 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(6), (0x3<<24)); s3c_gpio_setpull(EXYNOS5_GPE0(6), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(6)); ret = gpio_request(EXYNOS5_GPE0(7), "GPE0"); if (ret) printk(KERN_ERR "#### failed to request GPE0_7 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE0(7), (0x3<<28)); s3c_gpio_setpull(EXYNOS5_GPE0(7), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE0(7)); ret = gpio_request(EXYNOS5_GPE1(0), "GPE1"); if (ret) printk(KERN_ERR "#### failed to request GPE1_0 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE1(0), (0x3<<0)); s3c_gpio_setpull(EXYNOS5_GPE1(0), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE1(0)); ret = gpio_request(EXYNOS5_GPE1(1), "GPE1"); if (ret) printk(KERN_ERR "#### failed to request GPE1_1 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPE1(1), (0x3<<4)); s3c_gpio_setpull(EXYNOS5_GPE1(1), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPE1(1)); /* 2. GPIO setting for FIMC-IS */ ret = gpio_request(EXYNOS5_GPF0(0), "GPF0"); if (ret) printk(KERN_ERR "#### failed to request GPF0_0 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPF0(0), (0x2<<0)); s3c_gpio_setpull(EXYNOS5_GPF0(0), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPF0(0)); ret = gpio_request(EXYNOS5_GPF0(1), "GPF0"); if (ret) printk(KERN_ERR "#### failed to request GPF0_1 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPF0(1), (0x2<<4)); s3c_gpio_setpull(EXYNOS5_GPF0(1), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPF0(1)); ret = gpio_request(EXYNOS5_GPF0(2), "GPF0"); if (ret) printk(KERN_ERR "#### failed to request GPF0_2 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPF0(2), (0x2<<8)); s3c_gpio_setpull(EXYNOS5_GPF0(2), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPF0(2)); ret = gpio_request(EXYNOS5_GPF0(0), "GPF0"); if (ret) printk(KERN_ERR "#### failed to request GPF0_3 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPF0(3), (0x2<<12)); s3c_gpio_setpull(EXYNOS5_GPF0(3), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPF0(3)); ret = gpio_request(EXYNOS5_GPF1(0), "GPF1"); if (ret) printk(KERN_ERR "#### failed to request GPF1_0 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPF1(0), (0x3<<0)); s3c_gpio_setpull(EXYNOS5_GPF1(0), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPF1(0)); ret = gpio_request(EXYNOS5_GPF1(1), "GPF1"); if (ret) printk(KERN_ERR "#### failed to request GPF1_0 ####\n"); s3c_gpio_cfgpin(EXYNOS5_GPF1(1), (0x3<<4)); s3c_gpio_setpull(EXYNOS5_GPF1(1), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPF1(1)); /* CAM A port(b0010) : PCLK, VSYNC, HREF, CLK_OUT */ s3c_gpio_cfgrange_nopull(EXYNOS5_GPH0(3), 1, S3C_GPIO_SFN(2)); /* Camera A */ ret = gpio_request(EXYNOS5_GPX1(2), "GPX1"); if (ret) printk(KERN_ERR "#### failed to request GPX1_2 ####\n"); s3c_gpio_setpull(EXYNOS5_GPX1(2), S3C_GPIO_PULL_NONE); gpio_direction_output(EXYNOS5_GPX1(2), 0); gpio_direction_output(EXYNOS5_GPX1(2), 1); gpio_free(EXYNOS5_GPX1(2)); }