Lines Matching refs:drvdata

34 	struct tpda_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
36 drvdata->dsb_esize = 0;
37 drvdata->cmb_esize = 0;
40 static void tpda_set_element_size(struct tpda_drvdata *drvdata, u32 *val)
45 if (drvdata->dsb_esize == 64)
47 else if (drvdata->dsb_esize == 32)
50 if (drvdata->cmb_esize == 64)
52 else if (drvdata->cmb_esize == 32)
54 else if (drvdata->cmb_esize == 8)
65 static int tpdm_read_element_size(struct tpda_drvdata *drvdata,
73 "qcom,dsb-element-bits", &drvdata->dsb_esize);
77 "qcom,cmb-element-bits", &drvdata->cmb_esize);
95 static int tpda_get_element_size(struct tpda_drvdata *drvdata,
114 if (drvdata->dsb_esize || drvdata->cmb_esize)
116 rc = tpdm_read_element_size(drvdata, in);
121 rc = tpda_get_element_size(drvdata, in, -1);
132 static void tpda_enable_pre_port(struct tpda_drvdata *drvdata)
136 val = readl_relaxed(drvdata->base + TPDA_CR);
138 val |= FIELD_PREP(TPDA_CR_ATID, drvdata->atid);
139 writel_relaxed(val, drvdata->base + TPDA_CR);
142 static int tpda_enable_port(struct tpda_drvdata *drvdata, int port)
147 val = readl_relaxed(drvdata->base + TPDA_Pn_CR(port));
148 tpda_clear_element_size(drvdata->csdev);
149 rc = tpda_get_element_size(drvdata, drvdata->csdev, port);
150 if (!rc && (drvdata->dsb_esize || drvdata->cmb_esize)) {
151 tpda_set_element_size(drvdata, &val);
154 writel_relaxed(val, drvdata->base + TPDA_Pn_CR(port));
156 dev_warn_once(&drvdata->csdev->dev,
159 dev_warn_once(&drvdata->csdev->dev,
165 static int __tpda_enable(struct tpda_drvdata *drvdata, int port)
169 CS_UNLOCK(drvdata->base);
175 lockdep_assert_held(&drvdata->spinlock);
176 if (!drvdata->csdev->refcnt)
177 tpda_enable_pre_port(drvdata);
179 ret = tpda_enable_port(drvdata, port);
180 CS_LOCK(drvdata->base);
189 struct tpda_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
192 spin_lock(&drvdata->spinlock);
194 ret = __tpda_enable(drvdata, in->dest_port);
198 dev_dbg(drvdata->dev, "TPDA inport %d enabled.\n", in->dest_port);
202 spin_unlock(&drvdata->spinlock);
206 static void __tpda_disable(struct tpda_drvdata *drvdata, int port)
210 CS_UNLOCK(drvdata->base);
212 val = readl_relaxed(drvdata->base + TPDA_Pn_CR(port));
214 writel_relaxed(val, drvdata->base + TPDA_Pn_CR(port));
216 CS_LOCK(drvdata->base);
223 struct tpda_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
225 spin_lock(&drvdata->spinlock);
227 __tpda_disable(drvdata, in->dest_port);
230 spin_unlock(&drvdata->spinlock);
232 dev_dbg(drvdata->dev, "TPDA inport %d disabled\n", in->dest_port);
244 static int tpda_init_default_data(struct tpda_drvdata *drvdata)
258 drvdata->atid = atid;
267 struct tpda_drvdata *drvdata;
276 drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL);
277 if (!drvdata)
280 drvdata->dev = &adev->dev;
281 dev_set_drvdata(dev, drvdata);
286 drvdata->base = base;
288 spin_lock_init(&drvdata->spinlock);
290 ret = tpda_init_default_data(drvdata);
303 drvdata->csdev = coresight_register(&desc);
304 if (IS_ERR(drvdata->csdev))
305 return PTR_ERR(drvdata->csdev);
309 dev_dbg(drvdata->dev, "TPDA initialized\n");
315 struct tpda_drvdata *drvdata = dev_get_drvdata(&adev->dev);
317 coresight_trace_id_put_system_id(drvdata->atid);
318 coresight_unregister(drvdata->csdev);