[alsa-devel] [PATCH v4 9/9] davinci: USB1.1 support for Omapl138-Hawkboard

Sergei Shtylyov sshtylyov at mvista.com
Fri Oct 15 18:32:48 CEST 2010


Hello.

On 10/15/10 07:08, vm.rod25 at gmail.com wrote:

> From: Victor Rodriguez<victor.rodriguez at sasken.com>

> This patch adds USB1.1 support for the Hawkboard-L138 system

> Signed-off-by: Victor Rodriguez<victor.rodriguez at sasken.com>
[...]

> diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c
> index 87dea28..4658498 100644
> --- a/arch/arm/mach-davinci/board-omapl138-hawk.c
> +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c
[...]
> @@ -178,6 +181,109 @@ static struct davinci_mmc_config da850_mmc_config = {
>   	.version	= MMC_CTLR_VERSION_2,
>   };
>
> +static irqreturn_t omapl138_hawk_usb_ocic_irq(int irq, void *dev_id);
> +static da8xx_ocic_handler_t hawk_usb_ocic_handler;
> +
> +static const short da850_hawk_usb11_pins[] = {
> +	DA850_GPIO2_4, DA850_GPIO6_13,
> +	-1
> +};

    An empty wouldn't hurt here. Sorry if I overlooked this before...

> +static int hawk_usb_set_power(unsigned port, int on)
> +{
> +	gpio_set_value(DA850_USB1_VBUS_PIN, on);
> +	return 0;
> +}
> +
> +static int hawk_usb_get_power(unsigned port)
> +{
> +	return gpio_get_value(DA850_USB1_VBUS_PIN);
> +}
> +
> +static int hawk_usb_get_oci(unsigned port)
> +{
> +	return !gpio_get_value(DA850_USB1_OC_PIN);
> +}
> +
> +static int hawk_usb_ocic_notify(da8xx_ocic_handler_t handler)
> +{
> +	int irq         = gpio_to_irq(DA850_USB1_OC_PIN);
> +	int error       = 0;
> +
> +	if (handler != NULL) {
> +		hawk_usb_ocic_handler = handler;
> +
> +		error = request_irq(irq, omapl138_hawk_usb_ocic_irq,
> +					IRQF_DISABLED | IRQF_TRIGGER_RISING |
> +					IRQF_TRIGGER_FALLING,
> +					"OHCI over-current indicator", NULL);
> +		if (error)
> +			printk(KERN_ERR "%s: could not request IRQ to watch "
> +				"over-current indicator changes\n", __func__);

    pr_err() please.

> +	} else
> +		free_irq(irq, NULL);
> +
> +	return error;
> +}
> +
> +static struct da8xx_ohci_root_hub omapl138_hawk_usb11_pdata = {
> +	.set_power      = hawk_usb_set_power,
> +	.get_power      = hawk_usb_get_power,
> +	.get_oci        = hawk_usb_get_oci,
> +	.ocic_notify    = hawk_usb_ocic_notify,
> +	/* TPS2087 switch @ 5V */
> +	.potpgt         = (3 + 1) / 2,  /* 3 ms max */
> +};
> +
> +static irqreturn_t omapl138_hawk_usb_ocic_irq(int irq, void *dev_id)
> +{
> +	hawk_usb_ocic_handler(&omapl138_hawk_usb11_pdata, 1);
> +	return IRQ_HANDLED;
> +}
> +
> +static __init void omapl138_hawk_usb_init(void)
> +{
> +	int ret;
> +	u32 cfgchip2;
> +
> +	ret = davinci_cfg_reg_list(da850_hawk_usb11_pins);
> +	if (ret) {
> +		pr_warning("%s: USB 1.1 PinMux setup failed: %d\n",
> +			__func__, ret);
> +		return;
> +	}
> +
> +	/*
> +	 * Setup the Ref. clock frequency for the HAWK at 24 MHz.
> +	 */
> +	cfgchip2 = __raw_readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
> +	cfgchip2 &= ~CFGCHIP2_REFFREQ;
> +	cfgchip2 |=  CFGCHIP2_REFFREQ_24MHZ;
> +	__raw_writel(cfgchip2, DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
> +
> +	ret = gpio_request(DA850_USB1_VBUS_PIN, "USB1 VBUS\n");
> +	if (ret) {
> +		printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port "
> +			"power control: %d\n", __func__, ret);

    pr_err() please.

> +		return;
> +	}
> +	gpio_direction_output(DA850_USB1_VBUS_PIN, 0);
> +
> +	ret = gpio_request(DA850_USB1_OC_PIN, "USB1 OC");
> +	if (ret) {
> +		printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port "
> +			"over-current indicator: %d\n", __func__, ret);

    pr_err() please.

> +		return;
> +	}
> +	gpio_direction_input(DA850_USB1_OC_PIN);
> +
> +	ret = da8xx_register_usb11(&omapl138_hawk_usb11_pdata);
> +	if (ret) {
> +		pr_warning("%s: USB 1.1 registration failed: %d\n",
> +			__func__, ret);
> +		return;

    'return' is useless here...

> +	}
> +}
> +
>   static struct davinci_uart_config omapl138_hawk_uart_config __initdata = {
>   	.enabled_uarts = 0x7,
>   };

WBR, Sergei


More information about the Alsa-devel mailing list