Lines Matching refs:drvdata

38 int tmc_wait_for_tmcready(struct tmc_drvdata *drvdata)
40 struct coresight_device *csdev = drvdata->csdev;
52 void tmc_flush_and_stop(struct tmc_drvdata *drvdata)
54 struct coresight_device *csdev = drvdata->csdev;
58 ffcr = readl_relaxed(drvdata->base + TMC_FFCR);
60 writel_relaxed(ffcr, drvdata->base + TMC_FFCR);
62 writel_relaxed(ffcr, drvdata->base + TMC_FFCR);
69 tmc_wait_for_tmcready(drvdata);
72 void tmc_enable_hw(struct tmc_drvdata *drvdata)
74 writel_relaxed(TMC_CTL_CAPT_EN, drvdata->base + TMC_CTL);
77 void tmc_disable_hw(struct tmc_drvdata *drvdata)
79 writel_relaxed(0x0, drvdata->base + TMC_CTL);
82 u32 tmc_get_memwidth_mask(struct tmc_drvdata *drvdata)
94 switch (drvdata->memwidth) {
108 static int tmc_read_prepare(struct tmc_drvdata *drvdata)
112 switch (drvdata->config_type) {
115 ret = tmc_read_prepare_etb(drvdata);
118 ret = tmc_read_prepare_etr(drvdata);
125 dev_dbg(&drvdata->csdev->dev, "TMC read start\n");
130 static int tmc_read_unprepare(struct tmc_drvdata *drvdata)
134 switch (drvdata->config_type) {
137 ret = tmc_read_unprepare_etb(drvdata);
140 ret = tmc_read_unprepare_etr(drvdata);
147 dev_dbg(&drvdata->csdev->dev, "TMC read end\n");
155 struct tmc_drvdata *drvdata = container_of(file->private_data,
158 ret = tmc_read_prepare(drvdata);
164 dev_dbg(&drvdata->csdev->dev, "%s: successfully opened\n", __func__);
168 static inline ssize_t tmc_get_sysfs_trace(struct tmc_drvdata *drvdata,
171 switch (drvdata->config_type) {
174 return tmc_etb_get_sysfs_trace(drvdata, pos, len, bufpp);
176 return tmc_etr_get_sysfs_trace(drvdata, pos, len, bufpp);
187 struct tmc_drvdata *drvdata = container_of(file->private_data,
189 actual = tmc_get_sysfs_trace(drvdata, *ppos, len, &bufp);
194 dev_dbg(&drvdata->csdev->dev,
200 dev_dbg(&drvdata->csdev->dev, "%zu bytes copied\n", actual);
208 struct tmc_drvdata *drvdata = container_of(file->private_data,
211 ret = tmc_read_unprepare(drvdata);
215 dev_dbg(&drvdata->csdev->dev, "%s: released\n", __func__);
281 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent);
282 unsigned long val = drvdata->trigger_cntr;
293 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent);
299 drvdata->trigger_cntr = val;
307 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent);
309 return sprintf(buf, "%#x\n", drvdata->size);
318 struct tmc_drvdata *drvdata = dev_get_drvdata(dev->parent);
321 if (drvdata->config_type != TMC_CONFIG_TYPE_ETR)
330 drvdata->size = val;
394 static inline bool tmc_etr_has_non_secure_access(struct tmc_drvdata *drvdata)
396 u32 auth = readl_relaxed(drvdata->base + TMC_AUTHSTATUS);
409 struct tmc_drvdata *drvdata = dev_get_drvdata(parent);
412 if (!tmc_etr_has_non_secure_access(drvdata))
419 tmc_etr_init_caps(drvdata, (u32)(unsigned long)dev_caps);
422 tmc_etr_set_cap(drvdata, TMC_ETR_SG);
481 struct tmc_drvdata *drvdata = dev_get_drvdata(dev);
494 drvdata->base = base;
497 spin_lock_init(&drvdata->spinlock);
499 devid = readl_relaxed(drvdata->base + CORESIGHT_DEVID);
500 drvdata->config_type = BMVAL(devid, 6, 7);
501 drvdata->memwidth = tmc_get_memwidth(devid);
503 drvdata->pid = -1;
504 drvdata->etr_mode = ETR_MODE_AUTO;
506 if (drvdata->config_type == TMC_CONFIG_TYPE_ETR) {
507 drvdata->size = tmc_etr_get_default_buffer_size(dev);
508 drvdata->max_burst_size = tmc_etr_get_max_burst_size(dev);
510 drvdata->size = readl_relaxed(drvdata->base + TMC_RSZ) * 4;
515 switch (drvdata->config_type) {
531 idr_init(&drvdata->idr);
532 mutex_init(&drvdata->idr_mutex);
563 drvdata->csdev = coresight_register(&desc);
564 if (IS_ERR(drvdata->csdev)) {
565 ret = PTR_ERR(drvdata->csdev);
569 drvdata->miscdev.name = desc.name;
570 drvdata->miscdev.minor = MISC_DYNAMIC_MINOR;
571 drvdata->miscdev.fops = &tmc_fops;
572 ret = misc_register(&drvdata->miscdev);
574 coresight_unregister(drvdata->csdev);
581 struct tmc_drvdata *drvdata;
584 drvdata = devm_kzalloc(&adev->dev, sizeof(*drvdata), GFP_KERNEL);
585 if (!drvdata)
588 amba_set_drvdata(adev, drvdata);
599 struct tmc_drvdata *drvdata = amba_get_drvdata(adev);
601 spin_lock_irqsave(&drvdata->spinlock, flags);
603 if (coresight_get_mode(drvdata->csdev) == CS_MODE_DISABLED)
606 if (drvdata->config_type == TMC_CONFIG_TYPE_ETR)
607 tmc_etr_disable_hw(drvdata);
615 spin_unlock_irqrestore(&drvdata->spinlock, flags);
620 struct tmc_drvdata *drvdata = dev_get_drvdata(dev);
627 misc_deregister(&drvdata->miscdev);
628 coresight_unregister(drvdata->csdev);
663 struct tmc_drvdata *drvdata;
666 drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL);
667 if (!drvdata)
670 drvdata->pclk = coresight_get_enable_apb_pclk(&pdev->dev);
671 if (IS_ERR(drvdata->pclk))
674 dev_set_drvdata(&pdev->dev, drvdata);
689 struct tmc_drvdata *drvdata = dev_get_drvdata(&pdev->dev);
691 if (WARN_ON(!drvdata))
696 if (!IS_ERR_OR_NULL(drvdata->pclk))
697 clk_put(drvdata->pclk);
703 struct tmc_drvdata *drvdata = dev_get_drvdata(dev);
705 if (drvdata && !IS_ERR_OR_NULL(drvdata->pclk))
706 clk_disable_unprepare(drvdata->pclk);
712 struct tmc_drvdata *drvdata = dev_get_drvdata(dev);
714 if (drvdata && !IS_ERR_OR_NULL(drvdata->pclk))
715 clk_prepare_enable(drvdata->pclk);