mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-22 01:48:52 +09:00
![Simon Glass](/assets/img/avatar_default.png)
At present devres.h is included in all files that include dm.h but few make use of it. Also this pulls in linux/compat which adds several more headers. Drop the automatic inclusion and require files to include devres themselves. This provides a good indication of which files use devres. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Anatolij Gustschin <agust@denx.de>
57 lines
1.2 KiB
C
57 lines
1.2 KiB
C
// 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 <peter.chen@nxp.com>
|
|
* Pawel Laszczak <pawell@cadence.com>
|
|
*/
|
|
#include <dm.h>
|
|
#include <dm/devres.h>
|
|
#include <linux/compat.h>
|
|
#include <usb.h>
|
|
#include <usb/xhci.h>
|
|
|
|
#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;
|
|
}
|