static int smdk5410_vbus_ctrl(struct platform_device *pdev, int on) { int phy_num = pdev->id; unsigned gpio; int ret = -EINVAL; if (phy_num == 0) gpio = EXYNOS5410_GPK3(3); else if (phy_num == 1) gpio = EXYNOS5410_GPK2(7); else return ret; ret = gpio_request(gpio, "UDRD3_VBUSCTRL_U3"); if (ret < 0) { pr_err("failed to request UDRD3_%d_VBUSCTRL_U3\n", phy_num); return ret; } gpio_set_value(gpio, !!on); gpio_free(gpio); return ret; }
static void __init __maybe_unused smdk5410_drd1_init(void) { /* Initialize DRD1 gpio */ if (gpio_request(EXYNOS5410_GPK2(4), "UDRD3_1_OVERCUR_U2")) { pr_err("failed to request UDRD3_1_OVERCUR_U2\n"); } else { s3c_gpio_cfgpin(EXYNOS5410_GPK2(4), (0x2 << 16)); s3c_gpio_setpull(EXYNOS5410_GPK2(4), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(4)); } if (gpio_request(EXYNOS5410_GPK2(5), "UDRD3_1_OVERCUR_U3")) { pr_err("failed to request UDRD3_1_OVERCUR_U3\n"); } else { s3c_gpio_cfgpin(EXYNOS5410_GPK2(5), (0x2 << 20)); s3c_gpio_setpull(EXYNOS5410_GPK2(5), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(5)); } if (gpio_request_one(EXYNOS5410_GPK2(6), GPIOF_OUT_INIT_LOW, "UDRD3_1_VBUSCTRL_U2")) { pr_err("failed to request UDRD3_1_VBUSCTRL_U2\n"); } else { s3c_gpio_setpull(EXYNOS5410_GPK2(6), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(6)); } if (gpio_request_one(EXYNOS5410_GPK2(7), GPIOF_OUT_INIT_LOW, "UDRD3_1_VBUSCTRL_U3")) { pr_err("failed to request UDRD3_1_VBUSCTRL_U3\n"); } else { s3c_gpio_setpull(EXYNOS5410_GPK2(7), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(7)); } #if defined(CONFIG_USB_EXYNOS5_USB3_DRD_CH1) if (gpio_request_one(SMDK5410_ID1_GPIO, GPIOF_IN, "UDRD3_1_ID")) { pr_err("failed to request UDRD3_1_ID\n"); smdk5410_drd_pdata.id_irq = -1; } else { s3c_gpio_cfgpin(SMDK5410_ID1_GPIO, S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(SMDK5410_ID1_GPIO, S3C_GPIO_PULL_NONE); gpio_free(SMDK5410_ID1_GPIO); smdk5410_drd_pdata.id_irq = gpio_to_irq(SMDK5410_ID1_GPIO); } if (gpio_request_one(SMDK5410_VBUS1_GPIO, GPIOF_IN, "UDRD3_1_VBUS")) { pr_err("failed to request UDRD3_1_VBUS\n"); smdk5410_drd_pdata.vbus_irq = -1; } else { s3c_gpio_cfgpin(SMDK5410_VBUS1_GPIO, S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(SMDK5410_VBUS1_GPIO, S3C_GPIO_PULL_NONE); gpio_free(SMDK5410_VBUS1_GPIO); smdk5410_drd_pdata.vbus_irq = gpio_to_irq(SMDK5410_VBUS1_GPIO); } smdk5410_drd_pdata.quirks = 0; #if !defined(CONFIG_USB_XHCI_EXYNOS) smdk5410_drd_pdata.quirks |= FORCE_RUN_PERIPHERAL; #endif #else smdk5410_drd_pdata.id_irq = -1; smdk5410_drd_pdata.vbus_irq = -1; smdk5410_drd_pdata.quirks = DUMMY_DRD; #endif exynos5_usb3_drd1_set_platdata(&smdk5410_drd_pdata); }
static void __init universal5410_drd1_init(void) { /* Initialize DRD1 gpio */ if (gpio_request(EXYNOS5410_GPK2(4), "UDRD3_1_OVERCUR_U2")) printk(KERN_ERR "failed to request UDRD3_1_OVERCUR_U2\n"); else { s3c_gpio_cfgpin(EXYNOS5410_GPK2(4), (0x2 << 16)); s3c_gpio_setpull(EXYNOS5410_GPK2(4), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(4)); } if (gpio_request(EXYNOS5410_GPK2(5), "UDRD3_1_OVERCUR_U3")) printk(KERN_ERR "failed to request UDRD3_1_OVERCUR_U3\n"); else { s3c_gpio_cfgpin(EXYNOS5410_GPK2(5), (0x2 << 20)); s3c_gpio_setpull(EXYNOS5410_GPK2(5), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(5)); } if (gpio_request_one(EXYNOS5410_GPK2(6), GPIOF_OUT_INIT_LOW, "UDRD3_1_VBUSCTRL_U2")) printk(KERN_ERR "failed to request UDRD3_1_VBUSCTRL_U2\n"); else { s3c_gpio_setpull(EXYNOS5410_GPK2(6), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(6)); } if (gpio_request_one(EXYNOS5410_GPK2(7), GPIOF_OUT_INIT_LOW, "UDRD3_1_VBUSCTRL_U3")) printk(KERN_ERR "failed to request UDRD3_1_VBUSCTRL_U3\n"); else { s3c_gpio_setpull(EXYNOS5410_GPK2(7), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(7)); } #if !defined(CONFIG_USB_EXYNOS5_USB3_DRD_CH1) universal5410_drd_pdata.quirks = DUMMY_DRD; #elif defined(CONFIG_USB_EXYNOS_SS_UDC) universal5410_drd_pdata.quirks |= FORCE_RUN_PERIPHERAL; #endif exynos5_usb3_drd1_set_platdata(&universal5410_drd_pdata); }
.mosi = EXYNOS5410_GPB1(4), .miso = EXYNOS5410_GPB1(3), .num_chipselect = 1, }; static struct platform_device s3c_device_spi_gpio = { .name = "spi_gpio", .id = YMU831_BUS_NUM, .dev = { .platform_data = &spi_gpio_data, }, }; #elif defined(MODE_WM5102_I2C_EMUL) #include <linux/i2c-gpio.h> static struct i2c_gpio_platform_data gpio_i2c_data12 = { .scl_pin = EXYNOS5410_GPK2(2), .sda_pin = EXYNOS5410_GPK2(3), }; struct platform_device s3c_device_i2c12 = { .name = "i2c-gpio", .id = 12, .dev.platform_data = &gpio_i2c_data12, }; static struct i2c_board_info i2c_devs12_emul[] __initdata = { { I2C_BOARD_INFO("wm5102", 0x1a), .platform_data = &arizona_platform_data, .irq = IRQ_EINT(21), },
static void __init smdk5410_drd1_init(void) { /* Initialize DRD1 gpio */ if (gpio_request(EXYNOS5410_GPK2(4), "UDRD3_1_OVERCUR_U2")) { pr_err("failed to request UDRD3_1_OVERCUR_U2\n"); } else { s3c_gpio_cfgpin(EXYNOS5410_GPK2(4), (0x2 << 16)); s3c_gpio_setpull(EXYNOS5410_GPK2(4), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(4)); } if (gpio_request(EXYNOS5410_GPK2(5), "UDRD3_1_OVERCUR_U3")) { pr_err("failed to request UDRD3_1_OVERCUR_U3\n"); } else { s3c_gpio_cfgpin(EXYNOS5410_GPK2(5), (0x2 << 20)); s3c_gpio_setpull(EXYNOS5410_GPK2(5), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(5)); } if (gpio_request_one(EXYNOS5410_GPK2(6), GPIOF_OUT_INIT_LOW, "UDRD3_1_VBUSCTRL_U2")) { pr_err("failed to request UDRD3_1_VBUSCTRL_U2\n"); } else { s3c_gpio_setpull(EXYNOS5410_GPK2(6), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(6)); } if (gpio_request_one(EXYNOS5410_GPK2(7), GPIOF_OUT_INIT_LOW, "UDRD3_1_VBUSCTRL_U3")) { pr_err("failed to request UDRD3_1_VBUSCTRL_U3\n"); } else { s3c_gpio_setpull(EXYNOS5410_GPK2(7), S3C_GPIO_PULL_NONE); gpio_free(EXYNOS5410_GPK2(7)); } if (gpio_request_one(SMDK5410_ID1_GPIO, GPIOF_IN, "UDRD3_1_ID")) { pr_err("failed to request UDRD3_1_ID\n"); smdk5410_drd_pdata.id_irq = -1; } else { s3c_gpio_cfgpin(SMDK5410_ID1_GPIO, S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(SMDK5410_ID1_GPIO, S3C_GPIO_PULL_DOWN); gpio_free(SMDK5410_ID1_GPIO); smdk5410_drd_pdata.id_irq = gpio_to_irq(SMDK5410_ID1_GPIO); } if (gpio_request_one(SMDK5410_VBUS1_GPIO, GPIOF_IN, "UDRD3_1_VBUS")) { pr_err("failed to request UDRD3_1_VBUS\n"); smdk5410_drd_pdata.vbus_irq = -1; } else { s3c_gpio_cfgpin(SMDK5410_VBUS1_GPIO, S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(SMDK5410_VBUS1_GPIO, S3C_GPIO_PULL_NONE); gpio_free(SMDK5410_VBUS1_GPIO); smdk5410_drd_pdata.vbus_irq = gpio_to_irq(SMDK5410_VBUS1_GPIO); } smdk5410_drd_pdata.quirks = 0; smdk5410_drd_pdata.quirks |= FORCE_RUN_XHCI; exynos5_usb3_drd1_set_platdata(&smdk5410_drd_pdata); }