Lines Matching refs:drvdata
34 int tmc_wait_for_tmcready(struct tmc_drvdata *drvdata) in tmc_wait_for_tmcready() argument
36 struct coresight_device *csdev = drvdata->csdev; in tmc_wait_for_tmcready()
48 void tmc_flush_and_stop(struct tmc_drvdata *drvdata) in tmc_flush_and_stop() argument
50 struct coresight_device *csdev = drvdata->csdev; in tmc_flush_and_stop()
54 ffcr = readl_relaxed(drvdata->base + TMC_FFCR); in tmc_flush_and_stop()
56 writel_relaxed(ffcr, drvdata->base + TMC_FFCR); in tmc_flush_and_stop()
58 writel_relaxed(ffcr, drvdata->base + TMC_FFCR); in tmc_flush_and_stop()
65 tmc_wait_for_tmcready(drvdata); in tmc_flush_and_stop()
68 void tmc_enable_hw(struct tmc_drvdata *drvdata) in tmc_enable_hw() argument
70 writel_relaxed(TMC_CTL_CAPT_EN, drvdata->base + TMC_CTL); in tmc_enable_hw()
73 void tmc_disable_hw(struct tmc_drvdata *drvdata) in tmc_disable_hw() argument
75 writel_relaxed(0x0, drvdata->base + TMC_CTL); in tmc_disable_hw()
78 u32 tmc_get_memwidth_mask(struct tmc_drvdata *drvdata) in tmc_get_memwidth_mask() argument
90 switch (drvdata->memwidth) { in tmc_get_memwidth_mask()
104 static int tmc_read_prepare(struct tmc_drvdata *drvdata) in tmc_read_prepare() argument
108 switch (drvdata->config_type) { in tmc_read_prepare()
111 ret = tmc_read_prepare_etb(drvdata); in tmc_read_prepare()
114 ret = tmc_read_prepare_etr(drvdata); in tmc_read_prepare()
121 dev_dbg(&drvdata->csdev->dev, "TMC read start\n"); in tmc_read_prepare()
126 static int tmc_read_unprepare(struct tmc_drvdata *drvdata) in tmc_read_unprepare() argument
130 switch (drvdata->config_type) { in tmc_read_unprepare()
133 ret = tmc_read_unprepare_etb(drvdata); in tmc_read_unprepare()
136 ret = tmc_read_unprepare_etr(drvdata); in tmc_read_unprepare()
143 dev_dbg(&drvdata->csdev->dev, "TMC read end\n"); in tmc_read_unprepare()
151 struct tmc_drvdata *drvdata = container_of(file->private_data, in tmc_open() local
154 ret = tmc_read_prepare(drvdata); in tmc_open()
160 dev_dbg(&drvdata->csdev->dev, "%s: successfully opened\n", __func__); in tmc_open()
164 static inline ssize_t tmc_get_sysfs_trace(struct tmc_drvdata *drvdata, in tmc_get_sysfs_trace() argument
167 switch (drvdata->config_type) { in tmc_get_sysfs_trace()
170 return tmc_etb_get_sysfs_trace(drvdata, pos, len, bufpp); in tmc_get_sysfs_trace()
172 return tmc_etr_get_sysfs_trace(drvdata, pos, len, bufpp); in tmc_get_sysfs_trace()
183 struct tmc_drvdata *drvdata = container_of(file->private_data, in tmc_read() local
185 actual = tmc_get_sysfs_trace(drvdata, *ppos, len, &bufp); in tmc_read()
190 dev_dbg(&drvdata->csdev->dev, in tmc_read()
196 dev_dbg(&drvdata->csdev->dev, "%zu bytes copied\n", actual); in tmc_read()
204 struct tmc_drvdata *drvdata = container_of(file->private_data, in tmc_release() local
207 ret = tmc_read_unprepare(drvdata); in tmc_release()
211 dev_dbg(&drvdata->csdev->dev, "%s: released\n", __func__); in tmc_release()
297 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent); in trigger_cntr_show() local
298 unsigned long val = drvdata->trigger_cntr; in trigger_cntr_show()
309 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent); in trigger_cntr_store() local
315 drvdata->trigger_cntr = val; in trigger_cntr_store()
323 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent); in buffer_size_show() local
325 return sprintf(buf, "%#x\n", drvdata->size); in buffer_size_show()
334 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent); in buffer_size_store() local
337 if (drvdata->config_type != TMC_CONFIG_TYPE_ETR) in buffer_size_store()
346 drvdata->size = val; in buffer_size_store()
378 static inline bool tmc_etr_has_non_secure_access(struct tmc_drvdata *drvdata) in tmc_etr_has_non_secure_access() argument
380 u32 auth = readl_relaxed(drvdata->base + TMC_AUTHSTATUS); in tmc_etr_has_non_secure_access()
390 struct tmc_drvdata *drvdata = dev_get_drvdata(parent); in tmc_etr_setup_caps() local
392 if (!tmc_etr_has_non_secure_access(drvdata)) in tmc_etr_setup_caps()
396 tmc_etr_init_caps(drvdata, (u32)(unsigned long)dev_caps); in tmc_etr_setup_caps()
399 tmc_etr_set_cap(drvdata, TMC_ETR_SG); in tmc_etr_setup_caps()
459 struct tmc_drvdata *drvdata; in tmc_probe() local
465 drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); in tmc_probe()
466 if (!drvdata) in tmc_probe()
469 dev_set_drvdata(dev, drvdata); in tmc_probe()
478 drvdata->base = base; in tmc_probe()
481 spin_lock_init(&drvdata->spinlock); in tmc_probe()
483 devid = readl_relaxed(drvdata->base + CORESIGHT_DEVID); in tmc_probe()
484 drvdata->config_type = BMVAL(devid, 6, 7); in tmc_probe()
485 drvdata->memwidth = tmc_get_memwidth(devid); in tmc_probe()
487 drvdata->pid = -1; in tmc_probe()
489 if (drvdata->config_type == TMC_CONFIG_TYPE_ETR) { in tmc_probe()
490 drvdata->size = tmc_etr_get_default_buffer_size(dev); in tmc_probe()
491 drvdata->max_burst_size = tmc_etr_get_max_burst_size(dev); in tmc_probe()
493 drvdata->size = readl_relaxed(drvdata->base + TMC_RSZ) * 4; in tmc_probe()
499 switch (drvdata->config_type) { in tmc_probe()
514 idr_init(&drvdata->idr); in tmc_probe()
515 mutex_init(&drvdata->idr_mutex); in tmc_probe()
545 drvdata->csdev = coresight_register(&desc); in tmc_probe()
546 if (IS_ERR(drvdata->csdev)) { in tmc_probe()
547 ret = PTR_ERR(drvdata->csdev); in tmc_probe()
551 drvdata->miscdev.name = desc.name; in tmc_probe()
552 drvdata->miscdev.minor = MISC_DYNAMIC_MINOR; in tmc_probe()
553 drvdata->miscdev.fops = &tmc_fops; in tmc_probe()
554 ret = misc_register(&drvdata->miscdev); in tmc_probe()
556 coresight_unregister(drvdata->csdev); in tmc_probe()
566 struct tmc_drvdata *drvdata = amba_get_drvdata(adev); in tmc_shutdown() local
568 spin_lock_irqsave(&drvdata->spinlock, flags); in tmc_shutdown()
570 if (drvdata->mode == CS_MODE_DISABLED) in tmc_shutdown()
573 if (drvdata->config_type == TMC_CONFIG_TYPE_ETR) in tmc_shutdown()
574 tmc_etr_disable_hw(drvdata); in tmc_shutdown()
582 spin_unlock_irqrestore(&drvdata->spinlock, flags); in tmc_shutdown()
587 struct tmc_drvdata *drvdata = dev_get_drvdata(&adev->dev); in tmc_remove() local
594 misc_deregister(&drvdata->miscdev); in tmc_remove()
595 coresight_unregister(drvdata->csdev); in tmc_remove()