Lines Matching refs:drvdata

53 static int dynamic_funnel_enable_hw(struct funnel_drvdata *drvdata, int port)
57 struct coresight_device *csdev = drvdata->csdev;
59 CS_UNLOCK(drvdata->base);
61 functl = readl_relaxed(drvdata->base + FUNNEL_FUNCTL);
72 writel_relaxed(functl, drvdata->base + FUNNEL_FUNCTL);
73 writel_relaxed(drvdata->priority, drvdata->base + FUNNEL_PRICTL);
75 CS_LOCK(drvdata->base);
84 struct funnel_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
88 raw_spin_lock_irqsave(&drvdata->spinlock, flags);
90 if (drvdata->base)
91 rc = dynamic_funnel_enable_hw(drvdata, in->dest_port);
97 raw_spin_unlock_irqrestore(&drvdata->spinlock, flags);
105 static void dynamic_funnel_disable_hw(struct funnel_drvdata *drvdata,
109 struct coresight_device *csdev = drvdata->csdev;
111 CS_UNLOCK(drvdata->base);
113 functl = readl_relaxed(drvdata->base + FUNNEL_FUNCTL);
115 writel_relaxed(functl, drvdata->base + FUNNEL_FUNCTL);
121 CS_LOCK(drvdata->base);
128 struct funnel_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
132 raw_spin_lock_irqsave(&drvdata->spinlock, flags);
134 if (drvdata->base)
135 dynamic_funnel_disable_hw(drvdata, in->dest_port);
138 raw_spin_unlock_irqrestore(&drvdata->spinlock, flags);
157 struct funnel_drvdata *drvdata = dev_get_drvdata(dev->parent);
158 unsigned long val = drvdata->priority;
169 struct funnel_drvdata *drvdata = dev_get_drvdata(dev->parent);
175 drvdata->priority = val;
180 static u32 get_funnel_ctrl_hw(struct funnel_drvdata *drvdata)
184 CS_UNLOCK(drvdata->base);
185 functl = readl_relaxed(drvdata->base + FUNNEL_FUNCTL);
186 CS_LOCK(drvdata->base);
195 struct funnel_drvdata *drvdata = dev_get_drvdata(dev->parent);
199 val = get_funnel_ctrl_hw(drvdata);
219 struct funnel_drvdata *drvdata;
230 drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL);
231 if (!drvdata)
234 drvdata->atclk = devm_clk_get(dev, "atclk"); /* optional */
235 if (!IS_ERR(drvdata->atclk)) {
236 ret = clk_prepare_enable(drvdata->atclk);
241 drvdata->pclk = coresight_get_enable_apb_pclk(dev);
242 if (IS_ERR(drvdata->pclk))
255 drvdata->base = base;
261 dev_set_drvdata(dev, drvdata);
270 raw_spin_lock_init(&drvdata->spinlock);
276 drvdata->csdev = coresight_register(&desc);
277 if (IS_ERR(drvdata->csdev)) {
278 ret = PTR_ERR(drvdata->csdev);
285 if (ret && !IS_ERR_OR_NULL(drvdata->atclk))
286 clk_disable_unprepare(drvdata->atclk);
287 if (ret && !IS_ERR_OR_NULL(drvdata->pclk))
288 clk_disable_unprepare(drvdata->pclk);
294 struct funnel_drvdata *drvdata = dev_get_drvdata(dev);
296 coresight_unregister(drvdata->csdev);
304 struct funnel_drvdata *drvdata = dev_get_drvdata(dev);
306 if (drvdata && !IS_ERR(drvdata->atclk))
307 clk_disable_unprepare(drvdata->atclk);
309 if (drvdata && !IS_ERR_OR_NULL(drvdata->pclk))
310 clk_disable_unprepare(drvdata->pclk);
317 struct funnel_drvdata *drvdata = dev_get_drvdata(dev);
319 if (drvdata && !IS_ERR(drvdata->atclk))
320 clk_prepare_enable(drvdata->atclk);
322 if (drvdata && !IS_ERR_OR_NULL(drvdata->pclk))
323 clk_prepare_enable(drvdata->pclk);
351 struct funnel_drvdata *drvdata = dev_get_drvdata(&pdev->dev);
353 if (WARN_ON(!drvdata))
358 if (!IS_ERR_OR_NULL(drvdata->pclk))
359 clk_put(drvdata->pclk);