|
@@ -579,47 +579,29 @@ static const struct file_operations etb_fops = {
|
|
|
.llseek = no_llseek,
|
|
|
};
|
|
|
|
|
|
-static ssize_t status_show(struct device *dev,
|
|
|
- struct device_attribute *attr, char *buf)
|
|
|
-{
|
|
|
- unsigned long flags;
|
|
|
- u32 etb_rdr, etb_sr, etb_rrp, etb_rwp;
|
|
|
- u32 etb_trg, etb_cr, etb_ffsr, etb_ffcr;
|
|
|
- struct etb_drvdata *drvdata = dev_get_drvdata(dev->parent);
|
|
|
-
|
|
|
- pm_runtime_get_sync(drvdata->dev);
|
|
|
- spin_lock_irqsave(&drvdata->spinlock, flags);
|
|
|
- CS_UNLOCK(drvdata->base);
|
|
|
-
|
|
|
- etb_rdr = readl_relaxed(drvdata->base + ETB_RAM_DEPTH_REG);
|
|
|
- etb_sr = readl_relaxed(drvdata->base + ETB_STATUS_REG);
|
|
|
- etb_rrp = readl_relaxed(drvdata->base + ETB_RAM_READ_POINTER);
|
|
|
- etb_rwp = readl_relaxed(drvdata->base + ETB_RAM_WRITE_POINTER);
|
|
|
- etb_trg = readl_relaxed(drvdata->base + ETB_TRG);
|
|
|
- etb_cr = readl_relaxed(drvdata->base + ETB_CTL_REG);
|
|
|
- etb_ffsr = readl_relaxed(drvdata->base + ETB_FFSR);
|
|
|
- etb_ffcr = readl_relaxed(drvdata->base + ETB_FFCR);
|
|
|
-
|
|
|
- CS_LOCK(drvdata->base);
|
|
|
- spin_unlock_irqrestore(&drvdata->spinlock, flags);
|
|
|
-
|
|
|
- pm_runtime_put(drvdata->dev);
|
|
|
-
|
|
|
- return sprintf(buf,
|
|
|
- "Depth:\t\t0x%x\n"
|
|
|
- "Status:\t\t0x%x\n"
|
|
|
- "RAM read ptr:\t0x%x\n"
|
|
|
- "RAM wrt ptr:\t0x%x\n"
|
|
|
- "Trigger cnt:\t0x%x\n"
|
|
|
- "Control:\t0x%x\n"
|
|
|
- "Flush status:\t0x%x\n"
|
|
|
- "Flush ctrl:\t0x%x\n",
|
|
|
- etb_rdr, etb_sr, etb_rrp, etb_rwp,
|
|
|
- etb_trg, etb_cr, etb_ffsr, etb_ffcr);
|
|
|
-
|
|
|
- return -EINVAL;
|
|
|
-}
|
|
|
-static DEVICE_ATTR_RO(status);
|
|
|
+#define coresight_etb10_simple_func(name, offset) \
|
|
|
+ coresight_simple_func(struct etb_drvdata, name, offset)
|
|
|
+
|
|
|
+coresight_etb10_simple_func(rdp, ETB_RAM_DEPTH_REG);
|
|
|
+coresight_etb10_simple_func(sts, ETB_STATUS_REG);
|
|
|
+coresight_etb10_simple_func(rrp, ETB_RAM_READ_POINTER);
|
|
|
+coresight_etb10_simple_func(rwp, ETB_RAM_WRITE_POINTER);
|
|
|
+coresight_etb10_simple_func(trg, ETB_TRG);
|
|
|
+coresight_etb10_simple_func(ctl, ETB_CTL_REG);
|
|
|
+coresight_etb10_simple_func(ffsr, ETB_FFSR);
|
|
|
+coresight_etb10_simple_func(ffcr, ETB_FFCR);
|
|
|
+
|
|
|
+static struct attribute *coresight_etb_mgmt_attrs[] = {
|
|
|
+ &dev_attr_rdp.attr,
|
|
|
+ &dev_attr_sts.attr,
|
|
|
+ &dev_attr_rrp.attr,
|
|
|
+ &dev_attr_rwp.attr,
|
|
|
+ &dev_attr_trg.attr,
|
|
|
+ &dev_attr_ctl.attr,
|
|
|
+ &dev_attr_ffsr.attr,
|
|
|
+ &dev_attr_ffcr.attr,
|
|
|
+ NULL,
|
|
|
+};
|
|
|
|
|
|
static ssize_t trigger_cntr_show(struct device *dev,
|
|
|
struct device_attribute *attr, char *buf)
|
|
@@ -649,10 +631,23 @@ static DEVICE_ATTR_RW(trigger_cntr);
|
|
|
|
|
|
static struct attribute *coresight_etb_attrs[] = {
|
|
|
&dev_attr_trigger_cntr.attr,
|
|
|
- &dev_attr_status.attr,
|
|
|
NULL,
|
|
|
};
|
|
|
-ATTRIBUTE_GROUPS(coresight_etb);
|
|
|
+
|
|
|
+static const struct attribute_group coresight_etb_group = {
|
|
|
+ .attrs = coresight_etb_attrs,
|
|
|
+};
|
|
|
+
|
|
|
+static const struct attribute_group coresight_etb_mgmt_group = {
|
|
|
+ .attrs = coresight_etb_mgmt_attrs,
|
|
|
+ .name = "mgmt",
|
|
|
+};
|
|
|
+
|
|
|
+const struct attribute_group *coresight_etb_groups[] = {
|
|
|
+ &coresight_etb_group,
|
|
|
+ &coresight_etb_mgmt_group,
|
|
|
+ NULL,
|
|
|
+};
|
|
|
|
|
|
static int etb_probe(struct amba_device *adev, const struct amba_id *id)
|
|
|
{
|