From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001 From: Angelos Mouzakitis Date: Tue, 10 Oct 2023 14:33:42 +0000 Subject: Add submodule dependency files Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec --- roms/u-boot/drivers/usb/cdns3/host.c | 56 ++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 roms/u-boot/drivers/usb/cdns3/host.c (limited to 'roms/u-boot/drivers/usb/cdns3/host.c') diff --git a/roms/u-boot/drivers/usb/cdns3/host.c b/roms/u-boot/drivers/usb/cdns3/host.c new file mode 100644 index 000000000..b44e7df11 --- /dev/null +++ b/roms/u-boot/drivers/usb/cdns3/host.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Cadence USBSS DRD Driver - host side + * + * Copyright (C) 2018-2019 Cadence Design Systems. + * Copyright (C) 2017-2018 NXP + * + * Authors: Peter Chen + * Pawel Laszczak + */ +#include +#include +#include +#include +#include + +#include "core.h" +#include "drd.h" + +static int __cdns3_host_init(struct cdns3 *cdns) +{ + struct xhci_hcor *hcor; + struct xhci_hccr *hccr; + + cdns3_drd_switch_host(cdns, 1); + + hccr = (struct xhci_hccr *)cdns->xhci_regs; + hcor = (struct xhci_hcor *)(cdns->xhci_regs + + HC_LENGTH(xhci_readl(&(hccr)->cr_capbase))); + + return xhci_register(cdns->dev, hccr, hcor); +} + +static void cdns3_host_exit(struct cdns3 *cdns) +{ + xhci_deregister(cdns->dev); + cdns3_drd_switch_host(cdns, 0); +} + +int cdns3_host_init(struct cdns3 *cdns) +{ + struct cdns3_role_driver *rdrv; + + rdrv = devm_kzalloc(cdns->dev, sizeof(*rdrv), GFP_KERNEL); + if (!rdrv) + return -ENOMEM; + + rdrv->start = __cdns3_host_init; + rdrv->stop = cdns3_host_exit; + rdrv->state = CDNS3_ROLE_STATE_INACTIVE; + rdrv->name = "host"; + + cdns->roles[USB_ROLE_HOST] = rdrv; + + return 0; +} -- cgit