Lines Matching refs:drvdata

28 void tmc_wait_for_tmcready(struct tmc_drvdata *drvdata)  in tmc_wait_for_tmcready()  argument
31 if (coresight_timeout(drvdata->base, in tmc_wait_for_tmcready()
33 dev_err(drvdata->dev, in tmc_wait_for_tmcready()
38 void tmc_flush_and_stop(struct tmc_drvdata *drvdata) in tmc_flush_and_stop() argument
42 ffcr = readl_relaxed(drvdata->base + TMC_FFCR); in tmc_flush_and_stop()
44 writel_relaxed(ffcr, drvdata->base + TMC_FFCR); in tmc_flush_and_stop()
46 writel_relaxed(ffcr, drvdata->base + TMC_FFCR); in tmc_flush_and_stop()
48 if (coresight_timeout(drvdata->base, in tmc_flush_and_stop()
50 dev_err(drvdata->dev, in tmc_flush_and_stop()
54 tmc_wait_for_tmcready(drvdata); in tmc_flush_and_stop()
57 void tmc_enable_hw(struct tmc_drvdata *drvdata) in tmc_enable_hw() argument
59 writel_relaxed(TMC_CTL_CAPT_EN, drvdata->base + TMC_CTL); in tmc_enable_hw()
62 void tmc_disable_hw(struct tmc_drvdata *drvdata) in tmc_disable_hw() argument
64 writel_relaxed(0x0, drvdata->base + TMC_CTL); in tmc_disable_hw()
67 static int tmc_read_prepare(struct tmc_drvdata *drvdata) in tmc_read_prepare() argument
71 switch (drvdata->config_type) { in tmc_read_prepare()
74 ret = tmc_read_prepare_etb(drvdata); in tmc_read_prepare()
77 ret = tmc_read_prepare_etr(drvdata); in tmc_read_prepare()
84 dev_info(drvdata->dev, "TMC read start\n"); in tmc_read_prepare()
89 static int tmc_read_unprepare(struct tmc_drvdata *drvdata) in tmc_read_unprepare() argument
93 switch (drvdata->config_type) { in tmc_read_unprepare()
96 ret = tmc_read_unprepare_etb(drvdata); in tmc_read_unprepare()
99 ret = tmc_read_unprepare_etr(drvdata); in tmc_read_unprepare()
106 dev_info(drvdata->dev, "TMC read end\n"); in tmc_read_unprepare()
114 struct tmc_drvdata *drvdata = container_of(file->private_data, in tmc_open() local
117 ret = tmc_read_prepare(drvdata); in tmc_open()
123 dev_dbg(drvdata->dev, "%s: successfully opened\n", __func__); in tmc_open()
127 static inline ssize_t tmc_get_sysfs_trace(struct tmc_drvdata *drvdata, in tmc_get_sysfs_trace() argument
130 switch (drvdata->config_type) { in tmc_get_sysfs_trace()
133 return tmc_etb_get_sysfs_trace(drvdata, pos, len, bufpp); in tmc_get_sysfs_trace()
135 return tmc_etr_get_sysfs_trace(drvdata, pos, len, bufpp); in tmc_get_sysfs_trace()
146 struct tmc_drvdata *drvdata = container_of(file->private_data, in tmc_read() local
148 actual = tmc_get_sysfs_trace(drvdata, *ppos, len, &bufp); in tmc_read()
153 dev_dbg(drvdata->dev, "%s: copy_to_user failed\n", __func__); in tmc_read()
158 dev_dbg(drvdata->dev, "%zu bytes copied\n", actual); in tmc_read()
166 struct tmc_drvdata *drvdata = container_of(file->private_data, in tmc_release() local
169 ret = tmc_read_unprepare(drvdata); in tmc_release()
173 dev_dbg(drvdata->dev, "%s: released\n", __func__); in tmc_release()
257 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent); in trigger_cntr_show() local
258 unsigned long val = drvdata->trigger_cntr; in trigger_cntr_show()
269 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent); in trigger_cntr_store() local
275 drvdata->trigger_cntr = val; in trigger_cntr_store()
283 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent); in buffer_size_show() local
285 return sprintf(buf, "%#x\n", drvdata->size); in buffer_size_show()
294 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent); in buffer_size_store() local
297 if (drvdata->config_type != TMC_CONFIG_TYPE_ETR) in buffer_size_store()
306 drvdata->size = val; in buffer_size_store()
333 static inline bool tmc_etr_can_use_sg(struct tmc_drvdata *drvdata) in tmc_etr_can_use_sg() argument
335 return fwnode_property_present(drvdata->dev->fwnode, in tmc_etr_can_use_sg()
340 static int tmc_etr_setup_caps(struct tmc_drvdata *drvdata, in tmc_etr_setup_caps() argument
346 tmc_etr_init_caps(drvdata, (u32)(unsigned long)dev_caps); in tmc_etr_setup_caps()
348 if (!(devid & TMC_DEVID_NOSCAT) && tmc_etr_can_use_sg(drvdata)) in tmc_etr_setup_caps()
349 tmc_etr_set_cap(drvdata, TMC_ETR_SG); in tmc_etr_setup_caps()
366 dev_info(drvdata->dev, "Detected dma mask %dbits\n", dma_mask); in tmc_etr_setup_caps()
372 return dma_set_mask_and_coherent(drvdata->dev, DMA_BIT_MASK(dma_mask)); in tmc_etr_setup_caps()
382 struct tmc_drvdata *drvdata; in tmc_probe() local
397 drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); in tmc_probe()
398 if (!drvdata) in tmc_probe()
401 drvdata->dev = &adev->dev; in tmc_probe()
402 dev_set_drvdata(dev, drvdata); in tmc_probe()
411 drvdata->base = base; in tmc_probe()
413 spin_lock_init(&drvdata->spinlock); in tmc_probe()
415 devid = readl_relaxed(drvdata->base + CORESIGHT_DEVID); in tmc_probe()
416 drvdata->config_type = BMVAL(devid, 6, 7); in tmc_probe()
417 drvdata->memwidth = tmc_get_memwidth(devid); in tmc_probe()
419 if (drvdata->config_type == TMC_CONFIG_TYPE_ETR) { in tmc_probe()
423 &drvdata->size); in tmc_probe()
425 drvdata->size = SZ_1M; in tmc_probe()
427 drvdata->size = readl_relaxed(drvdata->base + TMC_RSZ) * 4; in tmc_probe()
436 switch (drvdata->config_type) { in tmc_probe()
446 ret = tmc_etr_setup_caps(drvdata, devid, id->data); in tmc_probe()
461 drvdata->csdev = coresight_register(&desc); in tmc_probe()
462 if (IS_ERR(drvdata->csdev)) { in tmc_probe()
463 ret = PTR_ERR(drvdata->csdev); in tmc_probe()
467 drvdata->miscdev.name = pdata->name; in tmc_probe()
468 drvdata->miscdev.minor = MISC_DYNAMIC_MINOR; in tmc_probe()
469 drvdata->miscdev.fops = &tmc_fops; in tmc_probe()
470 ret = misc_register(&drvdata->miscdev); in tmc_probe()
472 coresight_unregister(drvdata->csdev); in tmc_probe()