Lines Matching refs:dmamux
44 struct lpc18xx_dmamux_data *dmamux = dev_get_drvdata(dev); in lpc18xx_dmamux_free() local
48 spin_lock_irqsave(&dmamux->lock, flags); in lpc18xx_dmamux_free()
50 spin_unlock_irqrestore(&dmamux->lock, flags); in lpc18xx_dmamux_free()
57 struct lpc18xx_dmamux_data *dmamux = platform_get_drvdata(pdev); in lpc18xx_dmamux_reserve() local
67 if (mux >= dmamux->dma_master_requests) { in lpc18xx_dmamux_reserve()
86 spin_lock_irqsave(&dmamux->lock, flags); in lpc18xx_dmamux_reserve()
87 if (dmamux->muxes[mux].busy) { in lpc18xx_dmamux_reserve()
88 spin_unlock_irqrestore(&dmamux->lock, flags); in lpc18xx_dmamux_reserve()
90 mux, mux, dmamux->muxes[mux].value); in lpc18xx_dmamux_reserve()
95 dmamux->muxes[mux].busy = true; in lpc18xx_dmamux_reserve()
96 dmamux->muxes[mux].value = dma_spec->args[1]; in lpc18xx_dmamux_reserve()
98 regmap_update_bits(dmamux->reg, LPC18XX_CREG_DMAMUX, in lpc18xx_dmamux_reserve()
100 LPC18XX_DMAMUX_VAL(dmamux->muxes[mux].value, mux)); in lpc18xx_dmamux_reserve()
101 spin_unlock_irqrestore(&dmamux->lock, flags); in lpc18xx_dmamux_reserve()
107 dmamux->muxes[mux].value, mux); in lpc18xx_dmamux_reserve()
109 return &dmamux->muxes[mux]; in lpc18xx_dmamux_reserve()
115 struct lpc18xx_dmamux_data *dmamux; in lpc18xx_dmamux_probe() local
118 dmamux = devm_kzalloc(&pdev->dev, sizeof(*dmamux), GFP_KERNEL); in lpc18xx_dmamux_probe()
119 if (!dmamux) in lpc18xx_dmamux_probe()
122 dmamux->reg = syscon_regmap_lookup_by_compatible("nxp,lpc1850-creg"); in lpc18xx_dmamux_probe()
123 if (IS_ERR(dmamux->reg)) { in lpc18xx_dmamux_probe()
125 return PTR_ERR(dmamux->reg); in lpc18xx_dmamux_probe()
129 &dmamux->dma_mux_requests); in lpc18xx_dmamux_probe()
142 &dmamux->dma_master_requests); in lpc18xx_dmamux_probe()
149 dmamux->muxes = devm_kcalloc(&pdev->dev, dmamux->dma_master_requests, in lpc18xx_dmamux_probe()
152 if (!dmamux->muxes) in lpc18xx_dmamux_probe()
155 spin_lock_init(&dmamux->lock); in lpc18xx_dmamux_probe()
156 platform_set_drvdata(pdev, dmamux); in lpc18xx_dmamux_probe()
157 dmamux->dmarouter.dev = &pdev->dev; in lpc18xx_dmamux_probe()
158 dmamux->dmarouter.route_free = lpc18xx_dmamux_free; in lpc18xx_dmamux_probe()
161 &dmamux->dmarouter); in lpc18xx_dmamux_probe()