Merge tag 'stackleak-v4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[sfrench/cifs-2.6.git] / include / linux / coresight.h
index d828a6efe0b14ac712973bf72198b3dc03ed202b..46c67a7648778d8e7e1b0793bd8683567d132fce 100644 (file)
@@ -94,20 +94,15 @@ union coresight_dev_subtype {
  * @cpu:       the CPU a source belongs to. Only applicable for ETM/PTMs.
  * @name:      name of the component as shown under sysfs.
  * @nr_inport: number of input ports for this component.
- * @outports:  list of remote endpoint port number.
- * @child_names:name of all child components connected to this device.
- * @child_ports:child component port number the current component is
-               connected  to.
  * @nr_outport:        number of output ports for this component.
+ * @conns:     Array of nr_outport connections from this component
  */
 struct coresight_platform_data {
        int cpu;
        const char *name;
        int nr_inport;
-       int *outports;
-       const char **child_names;
-       int *child_ports;
        int nr_outport;
+       struct coresight_connection *conns;
 };
 
 /**
@@ -190,23 +185,15 @@ struct coresight_device {
  * @disable:           disables the sink.
  * @alloc_buffer:      initialises perf's ring buffer for trace collection.
  * @free_buffer:       release memory allocated in @get_config.
- * @set_buffer:                initialises buffer mechanic before a trace session.
- * @reset_buffer:      finalises buffer mechanic after a trace session.
  * @update_buffer:     update buffer pointers after a trace session.
  */
 struct coresight_ops_sink {
-       int (*enable)(struct coresight_device *csdev, u32 mode);
+       int (*enable)(struct coresight_device *csdev, u32 mode, void *data);
        void (*disable)(struct coresight_device *csdev);
        void *(*alloc_buffer)(struct coresight_device *csdev, int cpu,
                              void **pages, int nr_pages, bool overwrite);
        void (*free_buffer)(void *config);
-       int (*set_buffer)(struct coresight_device *csdev,
-                         struct perf_output_handle *handle,
-                         void *sink_config);
-       unsigned long (*reset_buffer)(struct coresight_device *csdev,
-                                     struct perf_output_handle *handle,
-                                     void *sink_config);
-       void (*update_buffer)(struct coresight_device *csdev,
+       unsigned long (*update_buffer)(struct coresight_device *csdev,
                              struct perf_output_handle *handle,
                              void *sink_config);
 };
@@ -270,6 +257,13 @@ extern int coresight_enable(struct coresight_device *csdev);
 extern void coresight_disable(struct coresight_device *csdev);
 extern int coresight_timeout(void __iomem *addr, u32 offset,
                             int position, int value);
+
+extern int coresight_claim_device(void __iomem *base);
+extern int coresight_claim_device_unlocked(void __iomem *base);
+
+extern void coresight_disclaim_device(void __iomem *base);
+extern void coresight_disclaim_device_unlocked(void __iomem *base);
+
 #else
 static inline struct coresight_device *
 coresight_register(struct coresight_desc *desc) { return NULL; }
@@ -279,6 +273,19 @@ coresight_enable(struct coresight_device *csdev) { return -ENOSYS; }
 static inline void coresight_disable(struct coresight_device *csdev) {}
 static inline int coresight_timeout(void __iomem *addr, u32 offset,
                                     int position, int value) { return 1; }
+static inline int coresight_claim_device_unlocked(void __iomem *base)
+{
+       return -EINVAL;
+}
+
+static inline int coresight_claim_device(void __iomem *base)
+{
+       return -EINVAL;
+}
+
+static inline void coresight_disclaim_device(void __iomem *base) {}
+static inline void coresight_disclaim_device_unlocked(void __iomem *base) {}
+
 #endif
 
 #ifdef CONFIG_OF