Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18847b42 authored by Javier Martin's avatar Javier Martin Committed by Sascha Hauer
Browse files

ARM i.MX27 Visstrim M10: fix gpio handling.



Some GPIOs in Visstrim M10 are used without being registered.
This leads to USB and video malfunctions. This patch registers
those GPIOs to solve the issue.

Signed-off-by: default avatarJavier Martin <javier.martin@vista-silicon.com>
Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
parent f90da3c7
Loading
Loading
Loading
Loading
+25 −11
Original line number Diff line number Diff line
@@ -107,6 +107,8 @@ static const int visstrim_m10_pins[] __initconst = {
	PB23_PF_USB_PWR,
	PB24_PF_USB_OC,
	/* CSI */
	TVP5150_RSTN | GPIO_GPIO | GPIO_OUT,
	TVP5150_PWDN | GPIO_GPIO | GPIO_OUT,
	PB10_PF_CSI_D0,
	PB11_PF_CSI_D1,
	PB12_PF_CSI_D2,
@@ -121,6 +123,24 @@ static const int visstrim_m10_pins[] __initconst = {
	PB21_PF_CSI_HSYNC,
};

static const struct gpio visstrim_m10_gpios[] __initconst = {
	{
		.gpio = TVP5150_RSTN,
		.flags = GPIOF_DIR_OUT | GPIOF_INIT_HIGH,
		.label = "tvp5150_rstn",
	},
	{
		.gpio = TVP5150_PWDN,
		.flags = GPIOF_DIR_OUT | GPIOF_INIT_LOW,
		.label = "tvp5150_pwdn",
	},
	{
		.gpio = OTG_PHY_CS_GPIO,
		.flags = GPIOF_DIR_OUT | GPIOF_INIT_LOW,
		.label = "usbotg_cs",
	},
};

/* Camera */
static int visstrim_camera_power(struct device *dev, int on)
{
@@ -164,13 +184,6 @@ static void __init visstrim_camera_init(void)
	struct platform_device *pdev;
	int dma;

	/* Initialize tvp5150 gpios */
	mxc_gpio_mode(TVP5150_RSTN | GPIO_GPIO | GPIO_OUT);
	mxc_gpio_mode(TVP5150_PWDN | GPIO_GPIO | GPIO_OUT);
	gpio_set_value(TVP5150_RSTN, 1);
	gpio_set_value(TVP5150_PWDN, 0);
	ndelay(1);

	gpio_set_value(TVP5150_PWDN, 1);
	ndelay(1);
	gpio_set_value(TVP5150_RSTN, 0);
@@ -351,10 +364,6 @@ static struct i2c_board_info visstrim_m10_i2c_devices[] = {
/* USB OTG */
static int otg_phy_init(struct platform_device *pdev)
{
	gpio_set_value(OTG_PHY_CS_GPIO, 0);

	mdelay(10);

	return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_POWER_PINS_ENABLED);
}

@@ -380,6 +389,11 @@ static void __init visstrim_m10_board_init(void)
	if (ret)
		pr_err("Failed to setup pins (%d)\n", ret);

	ret = gpio_request_array(visstrim_m10_gpios,
				ARRAY_SIZE(visstrim_m10_gpios));
	if (ret)
		pr_err("Failed to request gpios (%d)\n", ret);

	imx27_add_imx_ssi(0, &visstrim_m10_ssi_pdata);
	imx27_add_imx_uart0(&uart_pdata);