static void lcd_wa101s_set_power(struct plat_lcd_data *pd, unsigned int power) { if (power) { #ifndef CONFIG_BACKLIGHT_PWM gpio_request_one(EXYNOS5_GPB2(0), GPIOF_OUT_INIT_HIGH, "GPB2"); gpio_free(EXYNOS5_GPB2(0)); #endif /* fire nRESET on power up */ gpio_request_one(EXYNOS5_GPX0(6), GPIOF_OUT_INIT_HIGH, "GPX0"); mdelay(100); gpio_set_value(EXYNOS5_GPX0(6), 0); mdelay(10); gpio_set_value(EXYNOS5_GPX0(6), 1); mdelay(10); gpio_free(EXYNOS5_GPX0(6)); } else { #ifndef CONFIG_BACKLIGHT_PWM gpio_request_one(EXYNOS5_GPB2(0), GPIOF_OUT_INIT_LOW, "GPB2"); gpio_free(EXYNOS5_GPB2(0)); #endif } }
static void __init smdk5250_gpio_power_init(void) { int err = 0; err = gpio_request_one(EXYNOS5_GPX0(0), 0, "GPX0"); if (err) { printk(KERN_ERR "failed to request GPX0 for " "suspend/resume control\n"); return; } s3c_gpio_setpull(EXYNOS5_GPX0(0), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5_GPX0(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 int reset_lcd(struct lcd_device *ld) { int err = 0; err = gpio_request_one(EXYNOS5_GPX0(6), GPIOF_OUT_INIT_HIGH, "GPX0"); if (err) { printk(KERN_ERR "failed to request GPX0 for " "lcd reset control\n"); return err; } gpio_set_value(EXYNOS5_GPX0(6), 0); mdelay(1); gpio_set_value(EXYNOS5_GPX0(6), 1); gpio_free(EXYNOS5_GPX0(6)); #ifndef CONFIG_BACKLIGHT_PWM gpio_request_one(EXYNOS5_GPB2(0), GPIOF_OUT_INIT_HIGH, "GPB2"); gpio_free(EXYNOS5_GPB2(0)); #endif return 1; }
static void exynos_fimd_gpio_setup_24bpp(void) { unsigned int reg = 0; #if defined(CONFIG_LCD_WA101S) exynos4_fimd_cfg_gpios(EXYNOS5210_GPJ0(0), 5, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4); exynos4_fimd_cfg_gpios(EXYNOS5210_GPJ1(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4); exynos4_fimd_cfg_gpios(EXYNOS5210_GPJ2(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4); exynos4_fimd_cfg_gpios(EXYNOS5210_GPJ3(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4); exynos4_fimd_cfg_gpios(EXYNOS5210_GPJ4(0), 2, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4); #elif defined(CONFIG_LCD_LMS501KF03) exynos4_fimd_cfg_gpios(EXYNOS5210_GPJ0(0), 5, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4); exynos4_fimd_cfg_gpios(EXYNOS5210_GPJ1(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV1); exynos4_fimd_cfg_gpios(EXYNOS5210_GPJ2(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV1); exynos4_fimd_cfg_gpios(EXYNOS5210_GPJ3(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV1); exynos4_fimd_cfg_gpios(EXYNOS5210_GPJ4(0), 2, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV1); #endif #if defined(CONFIG_S5P_DP) /* Set Hotplug detect for DP */ s3c_gpio_cfgpin(EXYNOS5_GPX0(7), S3C_GPIO_SFN(3)); #endif /* * Set DISP1BLK_CFG register for Display path selection * DISP1_BLK output source selection : DISP1BLK_CFG[28:27] *--------------------- * 10 | From DISP0_BLK * 01 | From DISP1_BLK : selected * * FIMD of DISP1_BLK Bypass selection : DISP1BLK_CFG[15] * --------------------- * 0 | MIE/MDNIE * 1 | FIMD : selected */ reg = __raw_readl(S3C_VA_SYS + 0x0214); reg &= ~((1 << 28) | (1 << 27) | (1 << 15)); /* To save other reset values */ reg |= (0 << 28) | (1 << 27) | (1 << 15); __raw_writel(reg, S3C_VA_SYS + 0x0214); }
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; }
#include <linux/gpio.h> #include <linux/gpio_event.h> #include <linux/i2c.h> #include <linux/input.h> #include <plat/gpio-cfg.h> #include <plat/devs.h> #include <plat/iic.h> #include <mach/irqs.h> #include "board-smdk5250.h" static struct gpio_event_direct_entry smdk5250_keypad_key_map[] = { { .gpio = EXYNOS5_GPX0(0), .code = KEY_POWER, } }; static struct gpio_event_input_info smdk5250_keypad_key_info = { .info.func = gpio_event_input_func, .info.no_suspend = true, .debounce_time.tv64 = 5 * NSEC_PER_MSEC, .type = EV_KEY, .keymap = smdk5250_keypad_key_map, .keymap_size = ARRAY_SIZE(smdk5250_keypad_key_map) }; static struct gpio_event_info *smdk5250_input_info[] = { &smdk5250_keypad_key_info.info,
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); }
/* BT_UART_CTS */ {EXYNOS5_GPA0(2), S3C_GPIO_SFN(2), 2, S3C_GPIO_PULL_NONE}, /* BT_UART_RTS */ {EXYNOS5_GPA0(3), S3C_GPIO_SFN(2), 2, S3C_GPIO_PULL_NONE}, /* 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 */
static struct rtc_time init_time_data = { .tm_sec = 0, .tm_min = 0, .tm_hour = 12, .tm_wday = 0, .tm_mday = 1, .tm_mon = 0, .tm_year = 112, .tm_yday = 0, .tm_isdst = 0, }; static struct max77686_platform_data manta_max77686_info = { .num_regulators = ARRAY_SIZE(max77686_regulators), .regulators = max77686_regulators, .irq_gpio = EXYNOS5_GPX0(2), /* AP_PMIC_IRQ */ .irq_base = MANTA_IRQ_BOARD_PMIC_START, .wakeup = 1, .opmode_data = max77686_opmode_data, .ramp_rate = MAX77686_RAMP_RATE_27MV, .has_full_constraints = 1, .buck234_gpio_dvs = { EXYNOS5_GPV0(7), /* GPIO_PMIC_DVS1, */ EXYNOS5_GPV0(6), /* GPIO_PMIC_DVS2, */ EXYNOS5_GPV0(5), /* GPIO_PMIC_DVS3, */ }, .buck234_gpio_selb = { EXYNOS5_GPV0(4), /* GPIO_BUCK2_SEL, */ EXYNOS5_GPV0(1), /* GPIO_BUCK3_SEL, */