]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
coresight: cpu-debug: Add support for Qualcomm Kryo
authorSai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Thu, 29 Aug 2019 20:28:28 +0000 (14:28 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 Sep 2019 20:01:15 +0000 (22:01 +0200)
Add support for coresight CPU debug module on Qualcomm
Kryo CPUs. This patch adds the UCI entries for Kryo CPUs
found on MSM8996 which shares the same PIDs as ETMs.

Without this, below error is observed on MSM8996:

[    5.429867] OF: graph: no port node found in /soc/debug@3810000
[    5.429938] coresight-etm4x: probe of 3810000.debug failed with error -22
[    5.435415] coresight-cpu-debug 3810000.debug: Coresight debug-CPU0 initialized
[    5.446474] OF: graph: no port node found in /soc/debug@3910000
[    5.448927] coresight-etm4x: probe of 3910000.debug failed with error -22
[    5.454681] coresight-cpu-debug 3910000.debug: Coresight debug-CPU1 initialized
[    5.487765] OF: graph: no port node found in /soc/debug@3a10000
[    5.488007] coresight-etm4x: probe of 3a10000.debug failed with error -22
[    5.493024] coresight-cpu-debug 3a10000.debug: Coresight debug-CPU2 initialized
[    5.501802] OF: graph: no port node found in /soc/debug@3b10000
[    5.512901] coresight-etm4x: probe of 3b10000.debug failed with error -22
[    5.513192] coresight-cpu-debug 3b10000.debug: Coresight debug-CPU3 initialized

Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Tested-by: Leo Yan <leo.yan@linaro.org>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Link: https://lore.kernel.org/r/20190829202842.580-4-mathieu.poirier@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hwtracing/coresight/coresight-cpu-debug.c
drivers/hwtracing/coresight/coresight-priv.h

index 2463aa7ab4f6747a7a04670aba38a202ecb3e77b..96544b348c273fe3ede7ac5e40547afd8b4322bc 100644 (file)
@@ -646,24 +646,23 @@ static int debug_remove(struct amba_device *adev)
        return 0;
 }
 
+static const struct amba_cs_uci_id uci_id_debug[] = {
+       {
+               /*  CPU Debug UCI data */
+               .devarch        = 0x47706a15,
+               .devarch_mask   = 0xfff0ffff,
+               .devtype        = 0x00000015,
+       }
+};
+
 static const struct amba_id debug_ids[] = {
-       {       /* Debug for Cortex-A53 */
-               .id     = 0x000bbd03,
-               .mask   = 0x000fffff,
-       },
-       {       /* Debug for Cortex-A57 */
-               .id     = 0x000bbd07,
-               .mask   = 0x000fffff,
-       },
-       {       /* Debug for Cortex-A72 */
-               .id     = 0x000bbd08,
-               .mask   = 0x000fffff,
-       },
-       {       /* Debug for Cortex-A73 */
-               .id     = 0x000bbd09,
-               .mask   = 0x000fffff,
-       },
-       { 0, 0 },
+       CS_AMBA_ID(0x000bbd03),                         /* Cortex-A53 */
+       CS_AMBA_ID(0x000bbd07),                         /* Cortex-A57 */
+       CS_AMBA_ID(0x000bbd08),                         /* Cortex-A72 */
+       CS_AMBA_ID(0x000bbd09),                         /* Cortex-A73 */
+       CS_AMBA_UCI_ID(0x000f0205, uci_id_debug),       /* Qualcomm Kryo */
+       CS_AMBA_UCI_ID(0x000f0211, uci_id_debug),       /* Qualcomm Kryo */
+       {},
 };
 
 static struct amba_driver debug_driver = {
index 7d401790dd7e102a31675d8b1b8baee411661708..41ae5863104d95c3b25b4fe817d4f754ad19ee70 100644 (file)
@@ -185,11 +185,11 @@ static inline int etm_writel_cp14(u32 off, u32 val) { return 0; }
        }
 
 /* coresight AMBA ID, full UCI structure: id table entry. */
-#define CS_AMBA_UCI_ID(pid, uci_ptr)   \
-       {                               \
-               .id     = pid,          \
-               .mask   = 0x000fffff,   \
-               .data   = uci_ptr       \
+#define CS_AMBA_UCI_ID(pid, uci_ptr)           \
+       {                                       \
+               .id     = pid,                  \
+               .mask   = 0x000fffff,           \
+               .data   = (void *)uci_ptr       \
        }
 
 /* extract the data value from a UCI structure given amba_id pointer. */