blob: fae1232b0ce20e4fbc093155663312a1e0b915ba [file] [log] [blame]
Pratik Patelbfd2de62013-01-26 12:14:59 -08001/* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
Pratik Patel7831c082011-06-08 21:44:37 -07002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
Pratik Patel6fb38342012-06-03 14:51:38 -070013#ifndef _CORESIGHT_PRIV_H
14#define _CORESIGHT_PRIV_H
Pratik Patel7831c082011-06-08 21:44:37 -070015
Pratik Patelcf418622011-09-22 11:15:11 -070016#include <linux/bitops.h>
17
Pratik Patel17f3b822011-11-21 12:41:47 -080018/* Coresight management registers (0xF00-0xFCC)
19 * 0xFA0 - 0xFA4: Management registers in PFTv1.0
20 * Trace registers in PFTv1.1
21 */
Pratik Patel6fb38342012-06-03 14:51:38 -070022#define CORESIGHT_ITCTRL (0xF00)
23#define CORESIGHT_CLAIMSET (0xFA0)
24#define CORESIGHT_CLAIMCLR (0xFA4)
25#define CORESIGHT_LAR (0xFB0)
26#define CORESIGHT_LSR (0xFB4)
27#define CORESIGHT_AUTHSTATUS (0xFB8)
28#define CORESIGHT_DEVID (0xFC8)
29#define CORESIGHT_DEVTYPE (0xFCC)
Pratik Patel7831c082011-06-08 21:44:37 -070030
Pratik Patel6fb38342012-06-03 14:51:38 -070031#define CORESIGHT_UNLOCK (0xC5ACCE55)
Pratik Patel7831c082011-06-08 21:44:37 -070032
Pratik Patel17f3b822011-11-21 12:41:47 -080033#define TIMEOUT_US (100)
Pratik Patel7831c082011-06-08 21:44:37 -070034
35#define BM(lsb, msb) ((BIT(msb) - BIT(lsb)) + BIT(msb))
36#define BMVAL(val, lsb, msb) ((val & BM(lsb, msb)) >> lsb)
37#define BVAL(val, n) ((val & BIT(n)) >> n)
38
Pratik Patel9266be32013-06-13 23:21:40 -070039#ifdef CONFIG_CORESIGHT_FUSE
40extern bool coresight_fuse_access_disabled(void);
41extern bool coresight_fuse_apps_access_disabled(void);
42#else
43static inline bool coresight_fuse_access_disabled(void) { return false; }
44static inline bool coresight_fuse_apps_access_disabled(void) { return false; }
45#endif
Pratik Patel61e91702013-01-27 20:30:42 -080046#ifdef CONFIG_CORESIGHT_CSR
Pratik Patelb8bb4032012-07-22 23:09:11 -070047extern void msm_qdss_csr_enable_bam_to_usb(void);
48extern void msm_qdss_csr_disable_bam_to_usb(void);
Pratik Patelbfd2de62013-01-26 12:14:59 -080049extern void msm_qdss_csr_disable_flush(void);
Pushkar Joshic791fb32013-07-22 15:19:42 -070050extern int coresight_csr_hwctrl_set(uint64_t addr, uint32_t val);
Pushkar Joshibf213a02013-05-03 13:18:44 -070051extern void coresight_csr_set_byte_cntr(uint32_t);
Pratik Patelb8bb4032012-07-22 23:09:11 -070052#else
53static inline void msm_qdss_csr_enable_bam_to_usb(void) {}
54static inline void msm_qdss_csr_disable_bam_to_usb(void) {}
Pratik Patelbfd2de62013-01-26 12:14:59 -080055static inline void msm_qdss_csr_disable_flush(void) {}
Pushkar Joshic791fb32013-07-22 15:19:42 -070056static inline int coresight_csr_hwctrl_set(uint64_t addr,
Aparna Das3b8a7082013-04-02 13:51:13 -070057 uint32_t val) { return -ENOSYS; }
Pushkar Joshibf213a02013-05-03 13:18:44 -070058static inline void coresight_csr_set_byte_cntr(uint32_t val) {}
Pratik Patel61e91702013-01-27 20:30:42 -080059#endif
60#ifdef CONFIG_CORESIGHT_ETM
61extern unsigned int etm_readl_cp14(uint32_t off);
62extern void etm_writel_cp14(uint32_t val, uint32_t off);
63#else
Pratik Patele6e41da2012-09-12 12:50:29 -070064static inline unsigned int etm_readl_cp14(uint32_t off) { return 0; }
65static inline void etm_writel_cp14(uint32_t val, uint32_t off) {}
Pratik Patelb8bb4032012-07-22 23:09:11 -070066#endif
67
Pratik Patel7831c082011-06-08 21:44:37 -070068#endif