if (cdns->pdata && cdns->pdata->override_apb_timeout)
cdns->override_apb_timeout = cdns->pdata->override_apb_timeout;
- cdns->no_drd = device_property_read_bool(dev, "no_drd");
platform_set_drvdata(pdev, cdns);
ret = platform_get_irq_byname(pdev, "host");
cdns->dev_regs = regs;
- if (!cdns->no_drd) {
- cdns->otg_irq = platform_get_irq_byname(pdev, "otg");
- if (cdns->otg_irq < 0)
- return dev_err_probe(dev, cdns->otg_irq,
- "Failed to get otg IRQ\n");
+ cdns->otg_irq = platform_get_irq_byname(pdev, "otg");
+ if (cdns->otg_irq < 0)
+ return dev_err_probe(dev, cdns->otg_irq,
+ "Failed to get otg IRQ\n");
- res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "otg");
- if (!res) {
- dev_err(dev, "couldn't get otg resource\n");
- return -ENXIO;
- }
-
- cdns->otg_res = *res;
+ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "otg");
+ if (!res) {
+ dev_err(dev, "couldn't get otg resource\n");
+ return -ENXIO;
}
cdns->phyrst_a_enable = device_property_read_bool(dev, "cdns,phyrst-a-enable");
+ cdns->otg_res = *res;
+
cdns->wakeup_irq = platform_get_irq_byname_optional(pdev, "wakeup");
if (cdns->wakeup_irq == -EPROBE_DEFER)
return cdns->wakeup_irq;
goto err_cdns_init;
cdns->gadget_init = cdns3_plat_gadget_init;
-
ret = cdns_core_init_role(cdns);
if (ret)
goto err_cdns_init;
struct cdnsp_wrap {
struct platform_device *plat_dev;
- struct property_entry prop[3];
struct resource dev_res[6];
int devfn;
};
#define RES_HOST_ID 3
#define RES_DEV_ID 4
#define RES_DRD_ID 5
-/* DRD PCI configuration - 64-bit addressing */
-/* First PCI function */
+
#define PCI_BAR_HOST 0
-#define PCI_BAR_DEV 2
-/* Second PCI function */
#define PCI_BAR_OTG 0
-/* Device only PCI configuration - 32-bit addressing */
-/* First PCI function */
-#define PCI_BAR_ONLY_DEV 1
+#define PCI_BAR_DEV 2
#define PCI_DEV_FN_HOST_DEVICE 0
#define PCI_DEV_FN_OTG 1
struct cdnsp_wrap *wrap;
struct resource *res;
struct pci_dev *func;
- bool no_drd = false;
int ret = 0;
/*
pdev->devfn != PCI_DEV_FN_OTG))
return -EINVAL;
- if (pdev->device == PCI_DEVICE_ID_CDNS_UDC_USBSSP)
- no_drd = true;
-
func = cdnsp_get_second_fun(pdev);
- if (!func && !no_drd)
+ if (!func)
return -EINVAL;
- if ((func && func->class == PCI_CLASS_SERIAL_USB_XHCI) ||
+ if (func->class == PCI_CLASS_SERIAL_USB_XHCI ||
pdev->class == PCI_CLASS_SERIAL_USB_XHCI) {
ret = -EINVAL;
goto put_pci;
pci_set_master(pdev);
- if (func && pci_is_enabled(func)) {
+ if (pci_is_enabled(func)) {
wrap = pci_get_drvdata(func);
} else {
wrap = kzalloc_obj(*wrap);
res = wrap->dev_res;
if (pdev->devfn == PCI_DEV_FN_HOST_DEVICE) {
- int bar_dev = no_drd ? PCI_BAR_ONLY_DEV : PCI_BAR_DEV;
-
/* Function 0: host(BAR_0) + device(BAR_2). */
dev_dbg(&pdev->dev, "Initialize Device resources\n");
-
- res[RES_DEV_ID].start = pci_resource_start(pdev, bar_dev);
- res[RES_DEV_ID].end = pci_resource_end(pdev, bar_dev);
+ res[RES_DEV_ID].start = pci_resource_start(pdev, PCI_BAR_DEV);
+ res[RES_DEV_ID].end = pci_resource_end(pdev, PCI_BAR_DEV);
res[RES_DEV_ID].name = "dev";
res[RES_DEV_ID].flags = IORESOURCE_MEM;
dev_dbg(&pdev->dev, "USBSSP-DEV physical base addr: %pa\n",
wrap->dev_res[RES_IRQ_OTG_ID].flags = IORESOURCE_IRQ;
}
- if (no_drd || pci_is_enabled(func)) {
- u8 idx = 0;
-
+ if (pci_is_enabled(func)) {
/* set up platform device info */
pdata.override_apb_timeout = CHICKEN_APB_TIMEOUT_VALUE;
- if (no_drd) {
- wrap->prop[idx++] = PROPERTY_ENTRY_STRING("dr_mode", "peripheral");
- wrap->prop[idx++] = PROPERTY_ENTRY_BOOL("no_drd");
- } else {
- wrap->prop[idx++] = PROPERTY_ENTRY_STRING("dr_mode", "otg");
- wrap->prop[idx++] = PROPERTY_ENTRY_BOOL("usb-role-switch");
- }
-
- wrap->prop[idx] = (struct property_entry){ };
memset(&plat_info, 0, sizeof(plat_info));
plat_info.parent = &pdev->dev;
plat_info.fwnode = pdev->dev.fwnode;
plat_info.dma_mask = pdev->dma_mask;
plat_info.data = &pdata;
plat_info.size_data = sizeof(pdata);
- plat_info.properties = wrap->prop;
wrap->devfn = pdev->devfn;
/* register platform device */
wrap->plat_dev = platform_device_register_full(&plat_info);
if (wrap->devfn == pdev->devfn)
platform_device_unregister(wrap->plat_dev);
- if (!func || !pci_is_enabled(func))
+ if (!pci_is_enabled(func))
kfree(wrap);
pci_dev_put(func);
}
static const struct pci_device_id cdnsp_pci_ids[] = {
- { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_UDC_USBSSP),
- .class = PCI_CLASS_SERIAL_USB_DEVICE },
- { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_UDC_USBSSP),
- .class = PCI_CLASS_SERIAL_USB_CDNS },
{ PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USBSSP),
.class = PCI_CLASS_SERIAL_USB_DEVICE },
{ PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USBSSP),
{
u32 reg;
- if (cdns->version != CDNSP_CONTROLLER_V2 || cdns->no_drd)
+ if (cdns->version != CDNSP_CONTROLLER_V2)
return;
reg = readl(&cdns->otg_cdnsp_regs->override);
{
u32 reg;
- if (cdns->version != CDNSP_CONTROLLER_V2 || cdns->no_drd)
+ if (cdns->version != CDNSP_CONTROLLER_V2)
return;
reg = readl(&cdns->otg_cdnsp_regs->override);
u32 ready_bit;
int ret, val;
- if (cdns->no_drd)
- return 0;
-
/* switch OTG core */
writel(OTGCMD_DEV_BUS_REQ | reg, &cdns->otg_regs->cmd);
{
u32 val;
- if (cdns->no_drd)
- return;
-
/*
* Driver should wait at least 10us after disabling Device
* before turning-off Device (DEV_BUS_DROP).
u32 state, reg;
int ret;
- if (cdns->no_drd) {
- cdns->version = CDNSP_CONTROLLER_V2;
- cdns->dr_mode = USB_DR_MODE_PERIPHERAL;
- return 0;
- }
-
regs = devm_ioremap_resource(cdns->dev, &cdns->otg_res);
if (IS_ERR(regs))
return PTR_ERR(regs);