Re: [PATCH v2] usb: ohci-omap: Fix descriptor conversion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Tue, Dec 01, 2020 at 01:16:06PM +0100, Linus Walleij wrote:
> There were a bunch of issues with the patch converting the
> OMAP1 OSK board to use descriptors for controlling the USB
> host:
> 
> - The chip label was incorrect
> - The GPIO offset was off-by-one
> - The code should use sleeping accessors
> 
> This patch tries to fix all issues at the same time.
> 
> Cc: Aaro Koskinen <aaro.koskinen@xxxxxx>
> Reported-by: Aaro Koskinen <aaro.koskinen@xxxxxx>
> Fixes: 15d157e87443 ("usb: ohci-omap: Convert to use GPIO descriptors")
> Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>

Tested-by: Aaro Koskinen <aaro.koskinen@xxxxxx>

Thanks,

A.

> ---
> ChangeLog v1->v2:
> - Also free the GPIO in the boardfile bootstrap code so that
>   the driver can later on properly grab it.
> ---
>  arch/arm/mach-omap1/board-osk.c | 4 +++-
>  drivers/usb/host/ohci-omap.c    | 4 ++--
>  2 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
> index 144b9caa935c..0a4c9b0b13b0 100644
> --- a/arch/arm/mach-omap1/board-osk.c
> +++ b/arch/arm/mach-omap1/board-osk.c
> @@ -203,6 +203,8 @@ static int osk_tps_setup(struct i2c_client *client, void *context)
>  	 */
>  	gpio_request(OSK_TPS_GPIO_USB_PWR_EN, "n_vbus_en");
>  	gpio_direction_output(OSK_TPS_GPIO_USB_PWR_EN, 1);
> +	/* Free the GPIO again as the driver will request it */
> +	gpio_free(OSK_TPS_GPIO_USB_PWR_EN);
>  
>  	/* Set GPIO 2 high so LED D3 is off by default */
>  	tps65010_set_gpio_out_value(GPIO2, HIGH);
> @@ -288,7 +290,7 @@ static struct gpiod_lookup_table osk_usb_gpio_table = {
>  	.dev_id = "ohci",
>  	.table = {
>  		/* Power GPIO on the I2C-attached TPS65010 */
> -		GPIO_LOOKUP("i2c-tps65010", 1, "power", GPIO_ACTIVE_HIGH),
> +		GPIO_LOOKUP("tps65010", 0, "power", GPIO_ACTIVE_HIGH),
>  		GPIO_LOOKUP(OMAP_GPIO_LABEL, 9, "overcurrent",
>  			    GPIO_ACTIVE_HIGH),
>  	},
> diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
> index 9ccdf2c216b5..6374501ba139 100644
> --- a/drivers/usb/host/ohci-omap.c
> +++ b/drivers/usb/host/ohci-omap.c
> @@ -91,14 +91,14 @@ static int omap_ohci_transceiver_power(struct ohci_omap_priv *priv, int on)
>  				| ((1 << 5/*usb1*/) | (1 << 3/*usb2*/)),
>  			       INNOVATOR_FPGA_CAM_USB_CONTROL);
>  		else if (priv->power)
> -			gpiod_set_value(priv->power, 0);
> +			gpiod_set_value_cansleep(priv->power, 0);
>  	} else {
>  		if (machine_is_omap_innovator() && cpu_is_omap1510())
>  			__raw_writeb(__raw_readb(INNOVATOR_FPGA_CAM_USB_CONTROL)
>  				& ~((1 << 5/*usb1*/) | (1 << 3/*usb2*/)),
>  			       INNOVATOR_FPGA_CAM_USB_CONTROL);
>  		else if (priv->power)
> -			gpiod_set_value(priv->power, 1);
> +			gpiod_set_value_cansleep(priv->power, 1);
>  	}
>  
>  	return 0;
> -- 
> 2.26.2
> 



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux