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 spin_lock_irqsave(&drvdata->spinlock, flags);
90 if (drvdata->base)
91 rc = dynamic_funnel_enable_hw(drvdata, in->dest_port);
97 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 spin_lock_irqsave(&drvdata->spinlock, flags);
134 if (drvdata->base)
135 dynamic_funnel_disable_hw(drvdata, in->dest_port);
138 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;
260 dev_set_drvdata(dev, drvdata);
269 spin_lock_init(&drvdata->spinlock);
275 drvdata->csdev = coresight_register(&desc);
276 if (IS_ERR(drvdata->csdev)) {
277 ret = PTR_ERR(drvdata->csdev);
284 if (ret && !IS_ERR_OR_NULL(drvdata->atclk))
285 clk_disable_unprepare(drvdata->atclk);
286 if (ret && !IS_ERR_OR_NULL(drvdata->pclk))
287 clk_disable_unprepare(drvdata->pclk);
293 struct funnel_drvdata *drvdata = dev_get_drvdata(dev);
295 coresight_unregister(drvdata->csdev);
303 struct funnel_drvdata *drvdata = dev_get_drvdata(dev);
305 if (drvdata && !IS_ERR(drvdata->atclk))
306 clk_disable_unprepare(drvdata->atclk);
308 if (drvdata && !IS_ERR_OR_NULL(drvdata->pclk))
309 clk_disable_unprepare(drvdata->pclk);
316 struct funnel_drvdata *drvdata = dev_get_drvdata(dev);
318 if (drvdata && !IS_ERR(drvdata->atclk))
319 clk_prepare_enable(drvdata->atclk);
321 if (drvdata && !IS_ERR_OR_NULL(drvdata->pclk))
322 clk_prepare_enable(drvdata->pclk);
350 struct funnel_drvdata *drvdata = dev_get_drvdata(&pdev->dev);
352 if (WARN_ON(!drvdata))
357 if (!IS_ERR_OR_NULL(drvdata->pclk))
358 clk_put(drvdata->pclk);