From: David Brownell <david-b@pacbell.net>
To: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: linux-usb@vger.kernel.org, avictor.za@gmail.com,
linux-kernel@vger.kernel.org, haavard.skinnemoen@atmel.com,
patrice.vilchez@atmel.com
Subject: Re: [PATCH 2/2] at91/USB: at91sam9g45 series USB host integration
Date: Fri, 19 Jun 2009 00:43:00 -0700 [thread overview]
Message-ID: <200906190043.00428.david-b@pacbell.net> (raw)
In-Reply-To: <1244547493-19654-3-git-send-email-nicolas.ferre@atmel.com>
On Tuesday 09 June 2009, Nicolas Ferre wrote:
> This is the at91 specific part of USB host integration. The EHCI high speed
> controller has a companion OHCI controller to manage USB full and low speed.
> They are sharing the same IRQ line and vbus pin.
>
> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
My only issue here is with the GPIO stuff; see below.
> ---
> arch/arm/mach-at91/at91sam9g45_devices.c | 56 ++++++++++++++++++++++++++++++
> arch/arm/mach-at91/board-sam9m10g45ek.c | 1 +
> arch/arm/mach-at91/include/mach/board.h | 1 +
> 3 files changed, 58 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
> index d746e86..c2ecbb6 100644
> --- a/arch/arm/mach-at91/at91sam9g45_devices.c
> +++ b/arch/arm/mach-at91/at91sam9g45_devices.c
> @@ -83,6 +83,62 @@ void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data) {}
>
>
> /* --------------------------------------------------------------------
> + * USB Host HS (EHCI)
> + * Needs an OHCI host for low and full speed management
> + * -------------------------------------------------------------------- */
> +
> +#if defined(CONFIG_USB_EHCI_HCD) || defined(CONFIG_USB_EHCI_HCD_MODULE)
> +static u64 ehci_dmamask = DMA_BIT_MASK(32);
> +static struct at91_usbh_data usbh_ehci_data;
> +
> +static struct resource usbh_ehci_resources[] = {
> + [0] = {
> + .start = AT91SAM9G45_EHCI_BASE,
> + .end = AT91SAM9G45_EHCI_BASE + SZ_1M - 1,
> + .flags = IORESOURCE_MEM,
> + },
> + [1] = {
> + .start = AT91SAM9G45_ID_UHPHS,
> + .end = AT91SAM9G45_ID_UHPHS,
> + .flags = IORESOURCE_IRQ,
> + },
> +};
> +
> +static struct platform_device at91_usbh_ehci_device = {
> + .name = "atmel-ehci",
> + .id = -1,
> + .dev = {
> + .dma_mask = &ehci_dmamask,
> + .coherent_dma_mask = DMA_BIT_MASK(32),
> + .platform_data = &usbh_ehci_data,
> + },
> + .resource = usbh_ehci_resources,
> + .num_resources = ARRAY_SIZE(usbh_ehci_resources),
> +};
> +
> +void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data)
> +{
> + int i;
> +
> + if (!data)
> + return;
> +
> + /* Enable VBus control for UHP ports */
> + for (i = 0; i < data->ports; i++) {
> + if (data->vbus_pin[i])
> + at91_set_gpio_output(data->vbus_pin[i], 0);
This should gpio_request() and gpio_direction_output().
Don't use AT91-specific GPIO calls except for things that
the generic calls don't support ... like enabling open-drain
outputs, the deglitching support, or input pullups.
> + }
> +
> + usbh_ehci_data = *data;
> + at91_clock_associate("uhphs_clk", &at91_usbh_ehci_device.dev, "ehci_clk");
> + platform_device_register(&at91_usbh_ehci_device);
> +}
> +#else
> +void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data) {}
> +#endif
> +
> +
> +/* --------------------------------------------------------------------
> * USB HS Device (Gadget)
> * -------------------------------------------------------------------- */
>
> diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c
> index b8558ea..d7251b7 100644
> --- a/arch/arm/mach-at91/board-sam9m10g45ek.c
> +++ b/arch/arm/mach-at91/board-sam9m10g45ek.c
> @@ -358,6 +358,7 @@ static void __init ek_board_init(void)
> at91_add_device_serial();
> /* USB HS Host */
> at91_add_device_usbh_ohci(&ek_usbh_hs_data);
> + at91_add_device_usbh_ehci(&ek_usbh_hs_data);
> /* USB HS Device */
> at91_add_device_usba(&ek_usba_udc_data);
> /* SPI */
> diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
> index 74801d2..13640b0 100644
> --- a/arch/arm/mach-at91/include/mach/board.h
> +++ b/arch/arm/mach-at91/include/mach/board.h
> @@ -92,6 +92,7 @@ struct at91_usbh_data {
> };
> extern void __init at91_add_device_usbh(struct at91_usbh_data *data);
> extern void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data);
> +extern void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data);
>
> /* NAND / SmartMedia */
> struct atmel_nand_data {
> --
> 1.5.3.7
>
>
next prev parent reply other threads:[~2009-06-19 7:43 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-09 11:38 at91/USB: high speed USB support for at91sam9g45 series Nicolas Ferre
2009-06-09 11:38 ` [PATCH 1/2] at91/USB: Add USB drivers " Nicolas Ferre
2009-06-09 11:38 ` Nicolas Ferre
2009-06-09 11:38 ` [PATCH 2/2] at91/USB: at91sam9g45 series USB host integration Nicolas Ferre
2009-06-09 11:38 ` Nicolas Ferre
2009-06-19 7:43 ` David Brownell [this message]
2009-06-19 7:51 ` Haavard Skinnemoen
2009-06-19 9:26 ` David Brownell
2009-09-16 16:17 ` Nicolas Ferre
2009-09-16 16:17 ` Nicolas Ferre
2009-09-16 17:29 ` [PATCH] at91: use gpiolib calls for USB vbus pin on at91sam9g45 Nicolas Ferre
2009-09-16 17:29 ` Nicolas Ferre
2009-09-16 21:53 ` Jean-Christophe PLAGNIOL-VILLARD
2009-09-16 21:53 ` Jean-Christophe PLAGNIOL-VILLARD
2009-09-17 8:13 ` Nicolas Ferre
2009-09-17 8:13 ` Nicolas Ferre
2009-09-17 9:00 ` Jean-Christophe PLAGNIOL-VILLARD
2009-09-17 9:00 ` Jean-Christophe PLAGNIOL-VILLARD
2009-09-18 8:40 ` Nicolas Ferre
2009-09-18 8:40 ` Nicolas Ferre
2009-09-21 20:49 ` [PATCH 2/2] at91/USB: at91sam9g45 series USB host integration Andrew Victor
2009-09-23 15:31 ` Nicolas Ferre
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200906190043.00428.david-b@pacbell.net \
--to=david-b@pacbell.net \
--cc=avictor.za@gmail.com \
--cc=haavard.skinnemoen@atmel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=nicolas.ferre@atmel.com \
--cc=patrice.vilchez@atmel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.