|
@@ -40,6 +40,7 @@ enum coresight_dev_type {
|
|
|
CORESIGHT_DEV_TYPE_LINK,
|
|
|
CORESIGHT_DEV_TYPE_LINKSINK,
|
|
|
CORESIGHT_DEV_TYPE_SOURCE,
|
|
|
+ CORESIGHT_DEV_TYPE_HELPER,
|
|
|
};
|
|
|
|
|
|
enum coresight_dev_subtype_sink {
|
|
@@ -62,6 +63,10 @@ enum coresight_dev_subtype_source {
|
|
|
CORESIGHT_DEV_SUBTYPE_SOURCE_SOFTWARE,
|
|
|
};
|
|
|
|
|
|
+enum coresight_dev_subtype_helper {
|
|
|
+ CORESIGHT_DEV_SUBTYPE_HELPER_NONE,
|
|
|
+};
|
|
|
+
|
|
|
/**
|
|
|
* union coresight_dev_subtype - further characterisation of a type
|
|
|
* @sink_subtype: type of sink this component is, as defined
|
|
@@ -70,6 +75,8 @@ enum coresight_dev_subtype_source {
|
|
|
* by @coresight_dev_subtype_link.
|
|
|
* @source_subtype: type of source this component is, as defined
|
|
|
* by @coresight_dev_subtype_source.
|
|
|
+ * @helper_subtype: type of helper this component is, as defined
|
|
|
+ * by @coresight_dev_subtype_helper.
|
|
|
*/
|
|
|
union coresight_dev_subtype {
|
|
|
/* We have some devices which acts as LINK and SINK */
|
|
@@ -78,6 +85,7 @@ union coresight_dev_subtype {
|
|
|
enum coresight_dev_subtype_link link_subtype;
|
|
|
};
|
|
|
enum coresight_dev_subtype_source source_subtype;
|
|
|
+ enum coresight_dev_subtype_helper helper_subtype;
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -172,6 +180,7 @@ struct coresight_device {
|
|
|
#define source_ops(csdev) csdev->ops->source_ops
|
|
|
#define sink_ops(csdev) csdev->ops->sink_ops
|
|
|
#define link_ops(csdev) csdev->ops->link_ops
|
|
|
+#define helper_ops(csdev) csdev->ops->helper_ops
|
|
|
|
|
|
/**
|
|
|
* struct coresight_ops_sink - basic operations for a sink
|
|
@@ -231,10 +240,25 @@ struct coresight_ops_source {
|
|
|
struct perf_event *event);
|
|
|
};
|
|
|
|
|
|
+/**
|
|
|
+ * struct coresight_ops_helper - Operations for a helper device.
|
|
|
+ *
|
|
|
+ * All operations could pass in a device specific data, which could
|
|
|
+ * help the helper device to determine what to do.
|
|
|
+ *
|
|
|
+ * @enable : Enable the device
|
|
|
+ * @disable : Disable the device
|
|
|
+ */
|
|
|
+struct coresight_ops_helper {
|
|
|
+ int (*enable)(struct coresight_device *csdev, void *data);
|
|
|
+ int (*disable)(struct coresight_device *csdev, void *data);
|
|
|
+};
|
|
|
+
|
|
|
struct coresight_ops {
|
|
|
const struct coresight_ops_sink *sink_ops;
|
|
|
const struct coresight_ops_link *link_ops;
|
|
|
const struct coresight_ops_source *source_ops;
|
|
|
+ const struct coresight_ops_helper *helper_ops;
|
|
|
};
|
|
|
|
|
|
#ifdef CONFIG_CORESIGHT
|