1/*
2 * Blackfin Performance Monitor definitions
3 *
4 * Copyright 2005-2011 Analog Devices Inc.
5 *
6 * Licensed under the Clear BSD license or GPL-2 (or later).
7 */
8
9#ifndef __ASM_BFIN_PFMON_H__
10#define __ASM_BFIN_PFMON_H__
11
12/* PFCTL Masks */
13#define PFMON_MASK	0xff
14#define PFCEN_MASK	0x3
15#define PFCEN_DISABLE	0x0
16#define PFCEN_ENABLE_USER	0x1
17#define PFCEN_ENABLE_SUPV	0x2
18#define PFCEN_ENABLE_ALL	(PFCEN_ENABLE_USER | PFCEN_ENABLE_SUPV)
19
20#define PFPWR_P	0
21#define PEMUSW0_P	2
22#define PFCEN0_P	3
23#define PFMON0_P	5
24#define PEMUSW1_P	13
25#define PFCEN1_P	14
26#define PFMON1_P	16
27#define PFCNT0_P	24
28#define PFCNT1_P	25
29
30#define PFPWR	(1 << PFPWR_P)
31#define PEMUSW(n, x)	((x) << ((n) ? PEMUSW1_P : PEMUSW0_P))
32#define PEMUSW0	PEMUSW(0, 1)
33#define PEMUSW1	PEMUSW(1, 1)
34#define PFCEN(n, x)	((x) << ((n) ? PFCEN1_P : PFCEN0_P))
35#define PFCEN0	PFCEN(0, PFCEN_MASK)
36#define PFCEN1	PFCEN(1, PFCEN_MASK)
37#define PFCNT(n, x)	((x) << ((n) ? PFCNT1_P : PFCNT0_P))
38#define PFCNT0	PFCNT(0, 1)
39#define PFCNT1	PFCNT(1, 1)
40#define PFMON(n, x)	((x) << ((n) ? PFMON1_P : PFMON0_P))
41#define PFMON0	PFMON(0, PFMON_MASK)
42#define PFMON1	PFMON(1, PFMON_MASK)
43
44#endif
45