From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v5 1/2] usb: zynqmp: Add XHCI driver support
Date: Mon, 16 Nov 2015 07:09:09 +0100 [thread overview]
Message-ID: <201511160709.09633.marex@denx.de> (raw)
In-Reply-To: <1447653554-36345-1-git-send-email-sivadur@xilinx.com>
On Monday, November 16, 2015 at 06:59:13 AM, Siva Durga Prasad Paladugu wrote:
> From: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
>
> Added USB XHCI driver support for zynqmp.
>
> Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Hi!
[...]
> +static struct zynqmp_xhci zynqmp_xhci;
> +
> +unsigned long ctr_addr[] = CONFIG_ZYNQMP_XHCI_LIST;
Still no DM/DT support on Xilinx parts, huh ? :)
[...]
> +int xhci_hcd_init(int index, struct xhci_hccr **hccr, struct xhci_hcor
> **hcor) +{
> + struct zynqmp_xhci *ctx = &zynqmp_xhci;
> + int ret = 0;
> +
> + if (index < 0 || index >= ARRAY_SIZE(ctr_addr))
> + return -EINVAL;
> +
> + ctx->hcd = (struct xhci_hccr *)ctr_addr[index];
> + ctx->dwc3_reg = (struct dwc3 *)((char *)(ctx->hcd) + DWC3_REG_OFFSET);
Should be void *, not char * I think. Also, the parenthesis around ctx->hcd
are not needed.
> + ret = board_usb_init(index, USB_INIT_HOST);
> + if (ret != 0) {
> + puts("Failed to initialize board for USB\n");
> + return ret;
> + }
> +
> + ret = zynqmp_xhci_core_init(ctx);
> + if (ret < 0) {
> + puts("Failed to initialize xhci\n");
> + return ret;
> + }
> +
> + *hccr = (struct xhci_hccr *)ctx->hcd;
> + *hcor = (struct xhci_hcor *)((uint32_t) *hccr
> + + HC_LENGTH(xhci_readl(&(*hccr)->cr_capbase)));
You want to use uintptr_t for the same of 64bit parts.
> + debug("zynqmp-xhci: init hccr %x and hcor %x hc_length %d\n",
> + (uint32_t)*hccr, (uint32_t)*hcor,
> + (uint32_t)HC_LENGTH(xhci_readl(&(*hccr)->cr_capbase)));
We have %p for printing pointers, so drop the casts.
Also, since you're using HC_LENGTH() here twice, you might as well put it's
value into temporary variable and use it in both places, it might make the
code slightly more readable.
> + return ret;
> +}
> +
> +void xhci_hcd_stop(int index)
> +{
> + /*
> + * Currently zynqmp socs do not support PHY shutdown from
> + * sw. But this support may be added in future socs.
> + */
> +
> + return 0;
> +}
> diff --git a/include/configs/xilinx_zynqmp_ep.h
> b/include/configs/xilinx_zynqmp_ep.h index ed6023a..1845622 100644
> --- a/include/configs/xilinx_zynqmp_ep.h
> +++ b/include/configs/xilinx_zynqmp_ep.h
> @@ -23,6 +23,8 @@
> #define CONFIG_SYS_I2C_ZYNQ
> #define CONFIG_ZYNQ_EEPROM
> #define CONFIG_AHCI
> +#define CONFIG_ZYNQMP_XHCI_LIST {ZYNQMP_USB0_XHCI_BASEADDR, \
> + ZYNQMP_USB1_XHCI_BASEADDR}
>
> #include <configs/xilinx_zynqmp.h>
next prev parent reply other threads:[~2015-11-16 6:09 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-16 5:59 [U-Boot] [PATCH v5 1/2] usb: zynqmp: Add XHCI driver support Siva Durga Prasad Paladugu
2015-11-16 5:59 ` [U-Boot] [PATCH v5 2/2] usb: zynqmp: Enable USB XHCI support Siva Durga Prasad Paladugu
2015-11-16 6:09 ` Marek Vasut [this message]
2015-11-16 7:23 ` [U-Boot] [PATCH v5 1/2] usb: zynqmp: Add XHCI driver support Siva Durga Prasad Paladugu
2015-11-16 9:26 ` Marek Vasut
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=201511160709.09633.marex@denx.de \
--to=marex@denx.de \
--cc=u-boot@lists.denx.de \
/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.