drivers/hwtracing: make coresight-etm-perf.c explicitly non-modular
[firefly-linux-kernel-4.4.55.git] / drivers / hwtracing / coresight / coresight-etm.h
index 371fb7d2e829c14d649219ae37be226e4165cab2..51597cb2c08af69293c0b17d8698019fc8af949e 100644 (file)
@@ -13,6 +13,7 @@
 #ifndef _CORESIGHT_CORESIGHT_ETM_H
 #define _CORESIGHT_CORESIGHT_ETM_H
 
+#include <asm/local.h>
 #include <linux/spinlock.h>
 #include "coresight-priv.h"
 
 #define ETM_MODE_STALL         BIT(2)
 #define ETM_MODE_TIMESTAMP     BIT(3)
 #define ETM_MODE_CTXID         BIT(4)
-#define ETM_MODE_ALL           0x1f
+#define ETM_MODE_ALL           (ETM_MODE_EXCLUDE | ETM_MODE_CYCACC | \
+                                ETM_MODE_STALL | ETM_MODE_TIMESTAMP | \
+                                ETM_MODE_CTXID | ETM_MODE_EXCL_KERN | \
+                                ETM_MODE_EXCL_USER)
 
 #define ETM_SQR_MASK           0x3
 #define ETM_TRACEID_MASK       0x3f
  * @startstop_ctrl: setting for register ETMTSSCR.
  * @enable_event: setting for register ETMTEEVR.
  * @enable_ctrl1: setting for register ETMTECR1.
+ * @enable_ctrl2: setting for register ETMTECR2.
  * @fifofull_level: setting for register ETMFFLR.
  * @addr_idx:  index for the address comparator selection.
  * @addr_val:  value for address comparator register.
@@ -178,6 +183,7 @@ struct etm_config {
        u32                             startstop_ctrl;
        u32                             enable_event;
        u32                             enable_ctrl1;
+       u32                             enable_ctrl2;
        u32                             fifofull_level;
        u8                              addr_idx;
        u32                             addr_val[ETM_MAX_ADDR_CMP];
@@ -214,7 +220,7 @@ struct etm_config {
  * @port_size: port size as reported by ETMCR bit 4-6 and 21.
  * @arch:      ETM/PTM version number.
  * @use_cpu14: true if management registers need to be accessed via CP14.
- * @enable:    is this ETM/PTM currently tracing.
+ * @mode:      this tracer's mode, i.e sysFS, Perf or disabled.
  * @sticky_enable: true if ETM base configuration has been done.
  * @boot_enable:true if we should start tracing at boot time.
  * @os_unlock: true if access to management registers is allowed.
@@ -238,7 +244,7 @@ struct etm_drvdata {
        int                             port_size;
        u8                              arch;
        bool                            use_cp14;
-       bool                            enable;
+       local_t                         mode;
        bool                            sticky_enable;
        bool                            boot_enable;
        bool                            os_unlock;
@@ -293,5 +299,6 @@ static inline unsigned int etm_readl(struct etm_drvdata *drvdata, u32 off)
 extern const struct attribute_group *coresight_etm_groups[];
 int etm_get_trace_id(struct etm_drvdata *drvdata);
 void etm_set_default(struct etm_config *config);
+void etm_config_trace_mode(struct etm_config *config);
 struct etm_config *get_etm_config(struct etm_drvdata *drvdata);
 #endif