Lines Matching +full:layer +full:- +full:base +full:- +full:offset

1 // SPDX-License-Identifier: GPL-2.0
3 * dwc3-omap.c - OMAP Specific Glue layer
5 * Copyright (C) 2010-2011 Texas Instruments Incorporated - https://www.ti.com
18 #include <linux/dma-mapping.h>
118 void __iomem *base; member
141 static inline u32 dwc3_omap_readl(void __iomem *base, u32 offset) in dwc3_omap_readl() argument
143 return readl(base + offset); in dwc3_omap_readl()
146 static inline void dwc3_omap_writel(void __iomem *base, u32 offset, u32 value) in dwc3_omap_writel() argument
148 writel(value, base + offset); in dwc3_omap_writel()
153 return dwc3_omap_readl(omap->base, USBOTGSS_UTMI_OTG_CTRL + in dwc3_omap_read_utmi_ctrl()
154 omap->utmi_otg_offset); in dwc3_omap_read_utmi_ctrl()
159 dwc3_omap_writel(omap->base, USBOTGSS_UTMI_OTG_CTRL + in dwc3_omap_write_utmi_ctrl()
160 omap->utmi_otg_offset, value); in dwc3_omap_write_utmi_ctrl()
166 return dwc3_omap_readl(omap->base, USBOTGSS_IRQSTATUS_RAW_0 - in dwc3_omap_read_irq0_status()
167 omap->irq0_offset); in dwc3_omap_read_irq0_status()
172 dwc3_omap_writel(omap->base, USBOTGSS_IRQSTATUS_0 - in dwc3_omap_write_irq0_status()
173 omap->irq0_offset, value); in dwc3_omap_write_irq0_status()
179 return dwc3_omap_readl(omap->base, USBOTGSS_IRQSTATUS_RAW_MISC + in dwc3_omap_read_irqmisc_status()
180 omap->irqmisc_offset); in dwc3_omap_read_irqmisc_status()
185 dwc3_omap_writel(omap->base, USBOTGSS_IRQSTATUS_MISC + in dwc3_omap_write_irqmisc_status()
186 omap->irqmisc_offset, value); in dwc3_omap_write_irqmisc_status()
192 dwc3_omap_writel(omap->base, USBOTGSS_IRQENABLE_SET_MISC + in dwc3_omap_write_irqmisc_set()
193 omap->irqmisc_offset, value); in dwc3_omap_write_irqmisc_set()
199 dwc3_omap_writel(omap->base, USBOTGSS_IRQENABLE_SET_0 - in dwc3_omap_write_irq0_set()
200 omap->irq0_offset, value); in dwc3_omap_write_irq0_set()
205 dwc3_omap_writel(omap->base, USBOTGSS_IRQENABLE_CLR_MISC + in dwc3_omap_write_irqmisc_clr()
206 omap->irqmisc_offset, value); in dwc3_omap_write_irqmisc_clr()
211 dwc3_omap_writel(omap->base, USBOTGSS_IRQENABLE_CLR_0 - in dwc3_omap_write_irq0_clr()
212 omap->irq0_offset, value); in dwc3_omap_write_irq0_clr()
223 if (omap->vbus_reg) { in dwc3_omap_set_mailbox()
224 ret = regulator_enable(omap->vbus_reg); in dwc3_omap_set_mailbox()
226 dev_err(omap->dev, "regulator enable failed\n"); in dwc3_omap_set_mailbox()
245 if (omap->vbus_reg && regulator_is_enabled(omap->vbus_reg)) in dwc3_omap_set_mailbox()
246 regulator_disable(omap->vbus_reg); in dwc3_omap_set_mailbox()
261 dev_WARN(omap->dev, "invalid state\n"); in dwc3_omap_set_mailbox()
370 struct device_node *node = omap->dev->of_node; in dwc3_omap_map_offset()
380 if (of_device_is_compatible(node, "ti,am437x-dwc3")) { in dwc3_omap_map_offset()
381 omap->irq_eoi_offset = USBOTGSS_EOI_OFFSET; in dwc3_omap_map_offset()
382 omap->irq0_offset = USBOTGSS_IRQ0_OFFSET; in dwc3_omap_map_offset()
383 omap->irqmisc_offset = USBOTGSS_IRQMISC_OFFSET; in dwc3_omap_map_offset()
384 omap->utmi_otg_offset = USBOTGSS_UTMI_OTG_OFFSET; in dwc3_omap_map_offset()
385 omap->debug_offset = USBOTGSS_DEBUG_OFFSET; in dwc3_omap_map_offset()
392 struct device_node *node = omap->dev->of_node; in dwc3_omap_set_utmi_mode()
397 of_property_read_u32(node, "utmi-mode", &utmi_mode); in dwc3_omap_set_utmi_mode()
407 dev_WARN(omap->dev, "UNKNOWN utmi mode %d\n", utmi_mode); in dwc3_omap_set_utmi_mode()
416 struct device_node *node = omap->dev->of_node; in dwc3_omap_extcon_register()
420 edev = extcon_get_edev_by_phandle(omap->dev, 0); in dwc3_omap_extcon_register()
422 dev_vdbg(omap->dev, "couldn't get extcon device\n"); in dwc3_omap_extcon_register()
423 return -EPROBE_DEFER; in dwc3_omap_extcon_register()
426 omap->vbus_nb.notifier_call = dwc3_omap_vbus_notifier; in dwc3_omap_extcon_register()
427 ret = devm_extcon_register_notifier(omap->dev, edev, in dwc3_omap_extcon_register()
428 EXTCON_USB, &omap->vbus_nb); in dwc3_omap_extcon_register()
430 dev_vdbg(omap->dev, "failed to register notifier for USB\n"); in dwc3_omap_extcon_register()
432 omap->id_nb.notifier_call = dwc3_omap_id_notifier; in dwc3_omap_extcon_register()
433 ret = devm_extcon_register_notifier(omap->dev, edev, in dwc3_omap_extcon_register()
434 EXTCON_USB_HOST, &omap->id_nb); in dwc3_omap_extcon_register()
436 dev_vdbg(omap->dev, "failed to register notifier for USB-HOST\n"); in dwc3_omap_extcon_register()
448 omap->edev = edev; in dwc3_omap_extcon_register()
456 struct device_node *node = pdev->dev.of_node; in dwc3_omap_probe()
459 struct device *dev = &pdev->dev; in dwc3_omap_probe()
465 void __iomem *base; in dwc3_omap_probe() local
469 return -EINVAL; in dwc3_omap_probe()
474 return -ENOMEM; in dwc3_omap_probe()
482 base = devm_platform_ioremap_resource(pdev, 0); in dwc3_omap_probe()
483 if (IS_ERR(base)) in dwc3_omap_probe()
484 return PTR_ERR(base); in dwc3_omap_probe()
488 if (PTR_ERR(vbus_reg) != -ENODEV) in dwc3_omap_probe()
493 omap->dev = dev; in dwc3_omap_probe()
494 omap->irq = irq; in dwc3_omap_probe()
495 omap->base = base; in dwc3_omap_probe()
496 omap->vbus_reg = vbus_reg; in dwc3_omap_probe()
514 dev_err(&pdev->dev, "failed to create dwc3 core\n"); in dwc3_omap_probe()
518 ret = devm_request_threaded_irq(dev, omap->irq, dwc3_omap_interrupt, in dwc3_omap_probe()
520 "dwc3-omap", omap); in dwc3_omap_probe()
522 dev_err(dev, "failed to request IRQ #%d --> %d\n", in dwc3_omap_probe()
523 omap->irq, ret); in dwc3_omap_probe()
543 disable_irq(omap->irq); in dwc3_omap_remove()
544 of_platform_depopulate(omap->dev); in dwc3_omap_remove()
545 pm_runtime_put_sync(&pdev->dev); in dwc3_omap_remove()
546 pm_runtime_disable(&pdev->dev); in dwc3_omap_remove()
554 .compatible = "ti,am437x-dwc3"
565 omap->utmi_otg_ctrl = dwc3_omap_read_utmi_ctrl(omap); in dwc3_omap_suspend()
575 dwc3_omap_write_utmi_ctrl(omap, omap->utmi_otg_ctrl); in dwc3_omap_resume()
589 if (extcon_get_state(omap->edev, EXTCON_USB)) in dwc3_omap_complete()
594 if (extcon_get_state(omap->edev, EXTCON_USB_HOST)) in dwc3_omap_complete()
615 .name = "omap-dwc3",
623 MODULE_ALIAS("platform:omap-dwc3");
626 MODULE_DESCRIPTION("DesignWare USB3 OMAP Glue Layer");