]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/hwtracing/coresight/coresight-priv.h
Merge branch 'x86/urgent' into x86/cpu, to pick up dependency
[karo-tx-linux.git] / drivers / hwtracing / coresight / coresight-priv.h
index 333eddaed33930cb5bda16089c8732b2f4e1fd97..ad975c58080d28b0a43034ff2938825262951322 100644 (file)
 #define ETM_MODE_EXCL_KERN     BIT(30)
 #define ETM_MODE_EXCL_USER     BIT(31)
 
+#define coresight_simple_func(type, name, offset)                      \
+static ssize_t name##_show(struct device *_dev,                                \
+                          struct device_attribute *attr, char *buf)    \
+{                                                                      \
+       type *drvdata = dev_get_drvdata(_dev->parent);                  \
+       return scnprintf(buf, PAGE_SIZE, "0x%x\n",                      \
+                        readl_relaxed(drvdata->base + offset));        \
+}                                                                      \
+static DEVICE_ATTR_RO(name)
+
 enum cs_mode {
        CS_MODE_DISABLED,
        CS_MODE_SYSFS,
        CS_MODE_PERF,
 };
 
+/**
+ * struct cs_buffer - keep track of a recording session' specifics
+ * @cur:       index of the current buffer
+ * @nr_pages:  max number of pages granted to us
+ * @offset:    offset within the current buffer
+ * @data_size: how much we collected in this run
+ * @lost:      other than zero if we had a HW buffer wrap around
+ * @snapshot:  is this run in snapshot mode
+ * @data_pages:        a handle the ring buffer
+ */
+struct cs_buffers {
+       unsigned int            cur;
+       unsigned int            nr_pages;
+       unsigned long           offset;
+       local_t                 data_size;
+       local_t                 lost;
+       bool                    snapshot;
+       void                    **data_pages;
+};
+
 static inline void CS_LOCK(void __iomem *addr)
 {
        do {