Lines Matching +full:reg +full:- +full:names

2  * dwc3-omap.c - OMAP Specific Glue layer
4 * Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com
18 * 3. The names of the above-listed copyright holders may not be used
45 #include <linux/platform_data/dwc3-omap.h>
46 #include <linux/dma-mapping.h>
149 u32 reg; in dwc3_omap_interrupt() local
151 spin_lock(&omap->lock); in dwc3_omap_interrupt()
153 reg = dwc3_readl(omap->base, USBOTGSS_IRQSTATUS_1); in dwc3_omap_interrupt()
155 if (reg & USBOTGSS_IRQ1_DMADISABLECLR) { in dwc3_omap_interrupt()
156 dev_dbg(omap->dev, "DMA Disable was Cleared\n"); in dwc3_omap_interrupt()
157 omap->dma_status = false; in dwc3_omap_interrupt()
160 if (reg & USBOTGSS_IRQ1_OEVT) in dwc3_omap_interrupt()
161 dev_dbg(omap->dev, "OTG Event\n"); in dwc3_omap_interrupt()
163 if (reg & USBOTGSS_IRQ1_DRVVBUS_RISE) in dwc3_omap_interrupt()
164 dev_dbg(omap->dev, "DRVVBUS Rise\n"); in dwc3_omap_interrupt()
166 if (reg & USBOTGSS_IRQ1_CHRGVBUS_RISE) in dwc3_omap_interrupt()
167 dev_dbg(omap->dev, "CHRGVBUS Rise\n"); in dwc3_omap_interrupt()
169 if (reg & USBOTGSS_IRQ1_DISCHRGVBUS_RISE) in dwc3_omap_interrupt()
170 dev_dbg(omap->dev, "DISCHRGVBUS Rise\n"); in dwc3_omap_interrupt()
172 if (reg & USBOTGSS_IRQ1_IDPULLUP_RISE) in dwc3_omap_interrupt()
173 dev_dbg(omap->dev, "IDPULLUP Rise\n"); in dwc3_omap_interrupt()
175 if (reg & USBOTGSS_IRQ1_DRVVBUS_FALL) in dwc3_omap_interrupt()
176 dev_dbg(omap->dev, "DRVVBUS Fall\n"); in dwc3_omap_interrupt()
178 if (reg & USBOTGSS_IRQ1_CHRGVBUS_FALL) in dwc3_omap_interrupt()
179 dev_dbg(omap->dev, "CHRGVBUS Fall\n"); in dwc3_omap_interrupt()
181 if (reg & USBOTGSS_IRQ1_DISCHRGVBUS_FALL) in dwc3_omap_interrupt()
182 dev_dbg(omap->dev, "DISCHRGVBUS Fall\n"); in dwc3_omap_interrupt()
184 if (reg & USBOTGSS_IRQ1_IDPULLUP_FALL) in dwc3_omap_interrupt()
185 dev_dbg(omap->dev, "IDPULLUP Fall\n"); in dwc3_omap_interrupt()
187 dwc3_writel(omap->base, USBOTGSS_IRQSTATUS_1, reg); in dwc3_omap_interrupt()
189 reg = dwc3_readl(omap->base, USBOTGSS_IRQSTATUS_0); in dwc3_omap_interrupt()
190 dwc3_writel(omap->base, USBOTGSS_IRQSTATUS_0, reg); in dwc3_omap_interrupt()
192 spin_unlock(&omap->lock); in dwc3_omap_interrupt()
199 struct dwc3_omap_data *pdata = pdev->dev.platform_data; in dwc3_omap_probe()
205 int ret = -ENOMEM; in dwc3_omap_probe()
208 u32 reg; in dwc3_omap_probe() local
215 dev_err(&pdev->dev, "not enough memory\n"); in dwc3_omap_probe()
223 dev_err(&pdev->dev, "missing IRQ resource\n"); in dwc3_omap_probe()
224 ret = -EINVAL; in dwc3_omap_probe()
230 dev_err(&pdev->dev, "missing memory base resource\n"); in dwc3_omap_probe()
231 ret = -EINVAL; in dwc3_omap_probe()
235 base = ioremap_nocache(res->start, resource_size(res)); in dwc3_omap_probe()
237 dev_err(&pdev->dev, "ioremap failed\n"); in dwc3_omap_probe()
247 dev_err(&pdev->dev, "couldn't allocate dwc3 device\n"); in dwc3_omap_probe()
253 dev_err(&pdev->dev, "couldn't allocate dwc3 context memory\n"); in dwc3_omap_probe()
257 spin_lock_init(&omap->lock); in dwc3_omap_probe()
258 dma_set_coherent_mask(&dwc3->dev, pdev->dev.coherent_dma_mask); in dwc3_omap_probe()
260 dwc3->dev.parent = &pdev->dev; in dwc3_omap_probe()
261 dwc3->dev.dma_mask = pdev->dev.dma_mask; in dwc3_omap_probe()
262 dwc3->dev.dma_parms = pdev->dev.dma_parms; in dwc3_omap_probe()
263 omap->resource_size = resource_size(res); in dwc3_omap_probe()
264 omap->context = context; in dwc3_omap_probe()
265 omap->dev = &pdev->dev; in dwc3_omap_probe()
266 omap->irq = irq; in dwc3_omap_probe()
267 omap->base = base; in dwc3_omap_probe()
268 omap->dwc3 = dwc3; in dwc3_omap_probe()
270 reg = dwc3_readl(omap->base, USBOTGSS_UTMI_OTG_STATUS); in dwc3_omap_probe()
273 dev_dbg(&pdev->dev, "missing platform data\n"); in dwc3_omap_probe()
275 switch (pdata->utmi_mode) { in dwc3_omap_probe()
277 reg |= USBOTGSS_UTMI_OTG_STATUS_SW_MODE; in dwc3_omap_probe()
280 reg &= ~USBOTGSS_UTMI_OTG_STATUS_SW_MODE; in dwc3_omap_probe()
283 dev_dbg(&pdev->dev, "UNKNOWN utmi mode %d\n", in dwc3_omap_probe()
284 pdata->utmi_mode); in dwc3_omap_probe()
288 dwc3_writel(omap->base, USBOTGSS_UTMI_OTG_STATUS, reg); in dwc3_omap_probe()
291 reg = dwc3_readl(omap->base, USBOTGSS_SYSCONFIG); in dwc3_omap_probe()
292 omap->dma_status = !!(reg & USBOTGSS_SYSCONFIG_DMADISABLE); in dwc3_omap_probe()
294 /* Set No-Idle and No-Standby */ in dwc3_omap_probe()
295 reg &= ~(USBOTGSS_STANDBYMODE_MASK in dwc3_omap_probe()
298 reg |= (USBOTGSS_SYSCONFIG_STANDBYMODE(USBOTGSS_STANDBYMODE_NO_STANDBY) in dwc3_omap_probe()
301 dwc3_writel(omap->base, USBOTGSS_SYSCONFIG, reg); in dwc3_omap_probe()
303 ret = request_irq(omap->irq, dwc3_omap_interrupt, 0, in dwc3_omap_probe()
304 "dwc3-omap", omap); in dwc3_omap_probe()
306 dev_err(&pdev->dev, "failed to request IRQ #%d --> %d\n", in dwc3_omap_probe()
307 omap->irq, ret); in dwc3_omap_probe()
312 reg = USBOTGSS_IRQO_COREIRQ_ST; in dwc3_omap_probe()
313 dwc3_writel(omap->base, USBOTGSS_IRQENABLE_SET_0, reg); in dwc3_omap_probe()
315 reg = (USBOTGSS_IRQ1_OEVT | in dwc3_omap_probe()
325 dwc3_writel(omap->base, USBOTGSS_IRQENABLE_SET_1, reg); in dwc3_omap_probe()
327 ret = platform_device_add_resources(dwc3, pdev->resource, in dwc3_omap_probe()
328 pdev->num_resources); in dwc3_omap_probe()
330 dev_err(&pdev->dev, "couldn't add resources to dwc3 device\n"); in dwc3_omap_probe()
336 dev_err(&pdev->dev, "failed to register dwc3 device\n"); in dwc3_omap_probe()
343 free_irq(omap->irq, omap); in dwc3_omap_probe()
346 kfree(omap->context); in dwc3_omap_probe()
368 platform_device_unregister(omap->dwc3); in dwc3_omap_remove()
370 dwc3_put_device_id(omap->dwc3->id); in dwc3_omap_remove()
371 free_irq(omap->irq, omap); in dwc3_omap_remove()
372 iounmap(omap->base); in dwc3_omap_remove()
374 kfree(omap->context); in dwc3_omap_remove()
392 .name = "omap-dwc3",
399 MODULE_ALIAS("platform:omap-dwc3");