1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
2ea1af9f2SPhilipp Tomsich /*
3ea1af9f2SPhilipp Tomsich  * GTBUS initialisation for sun9i
4ea1af9f2SPhilipp Tomsich  *
5ea1af9f2SPhilipp Tomsich  * (C) Copyright 2016 Theobroma Systems Design und Consulting GmbH
6ea1af9f2SPhilipp Tomsich  *                    Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
7ea1af9f2SPhilipp Tomsich  */
8ea1af9f2SPhilipp Tomsich 
9ea1af9f2SPhilipp Tomsich #ifndef _SUNXI_GTBUS_SUN9I_H
10ea1af9f2SPhilipp Tomsich #define _SUNXI_GTBUS_SUN9I_H
11ea1af9f2SPhilipp Tomsich 
12ea1af9f2SPhilipp Tomsich #include <linux/types.h>
13ea1af9f2SPhilipp Tomsich 
14ea1af9f2SPhilipp Tomsich struct sunxi_gtbus_reg {
15ea1af9f2SPhilipp Tomsich 	u32 mst_cfg[36];           /* 0x000 */
16ea1af9f2SPhilipp Tomsich 	u8  reserved1[0x70];       /* 0x090 */
17ea1af9f2SPhilipp Tomsich 	u32 bw_wdw_cfg;            /* 0x100 */
18ea1af9f2SPhilipp Tomsich 	u32 mst_read_prio_cfg[2];  /* 0x104 */
19ea1af9f2SPhilipp Tomsich 	u32 lvl2_mst_cfg;          /* 0x10c */
20ea1af9f2SPhilipp Tomsich 	u32 sw_clk_on;             /* 0x110 */
21ea1af9f2SPhilipp Tomsich 	u32 sw_clk_off;            /* 0x114 */
22ea1af9f2SPhilipp Tomsich 	u32 pmu_mst_en;            /* 0x118 */
23ea1af9f2SPhilipp Tomsich 	u32 pmu_cfg;               /* 0x11c */
24ea1af9f2SPhilipp Tomsich 	u32 pmu_cnt[19];           /* 0x120 */
25ea1af9f2SPhilipp Tomsich 	u32 reserved2[0x94];       /* 0x16c */
26ea1af9f2SPhilipp Tomsich 	u32 cci400_config[3];      /* 0x200 */
27ea1af9f2SPhilipp Tomsich 	u32 cci400_status[2];      /* 0x20c */
28ea1af9f2SPhilipp Tomsich };
29ea1af9f2SPhilipp Tomsich 
30ea1af9f2SPhilipp Tomsich /* for register GT_MST_CFG_REG(n) */
31ea1af9f2SPhilipp Tomsich #define GT_ENABLE_REQ           (1<<31) /* clock on */
32ea1af9f2SPhilipp Tomsich #define GT_DISABLE_REQ          (1<<30) /* clock off */
33ea1af9f2SPhilipp Tomsich #define GT_QOS_SHIFT            28
34ea1af9f2SPhilipp Tomsich #define GT_THD1_SHIFT           16
35ea1af9f2SPhilipp Tomsich #define GT_REQN_MAX             0xf /* max no master requests in one cycle */
36ea1af9f2SPhilipp Tomsich #define GT_REQN_SHIFT           12
37ea1af9f2SPhilipp Tomsich #define GT_THD0_SHIFT           0
38ea1af9f2SPhilipp Tomsich 
39ea1af9f2SPhilipp Tomsich #define GT_QOS_MAX              0x3
40ea1af9f2SPhilipp Tomsich #define GT_THD_MAX              0xfff
41ea1af9f2SPhilipp Tomsich #define GT_BW_WDW_MAX           0xffff
42ea1af9f2SPhilipp Tomsich 
43ea1af9f2SPhilipp Tomsich /* mst_read_prio_cfg */
44ea1af9f2SPhilipp Tomsich #define GT_PRIO_LOW     0
45ea1af9f2SPhilipp Tomsich #define GT_PRIO_HIGH    1
46ea1af9f2SPhilipp Tomsich 
47ea1af9f2SPhilipp Tomsich /* GTBUS port ids */
48ea1af9f2SPhilipp Tomsich #define GT_PORT_CPUM1   0
49ea1af9f2SPhilipp Tomsich #define GT_PORT_CPUM2   1
50ea1af9f2SPhilipp Tomsich #define GT_PORT_SATA    2
51ea1af9f2SPhilipp Tomsich #define	GT_PORT_USB3    3
52ea1af9f2SPhilipp Tomsich #define	GT_PORT_FE0     4
53ea1af9f2SPhilipp Tomsich #define	GT_PORT_BE1     5
54ea1af9f2SPhilipp Tomsich #define	GT_PORT_BE2     6
55ea1af9f2SPhilipp Tomsich #define	GT_PORT_IEP0    7
56ea1af9f2SPhilipp Tomsich #define	GT_PORT_FE1     8
57ea1af9f2SPhilipp Tomsich #define	GT_PORT_BE0     9
58ea1af9f2SPhilipp Tomsich #define	GT_PORT_FE2     10
59ea1af9f2SPhilipp Tomsich #define	GT_PORT_IEP1    11
60ea1af9f2SPhilipp Tomsich #define	GT_PORT_VED     12
61ea1af9f2SPhilipp Tomsich #define	GT_PORT_VEE     13
62ea1af9f2SPhilipp Tomsich #define	GT_PORT_FD      14
63ea1af9f2SPhilipp Tomsich #define	GT_PORT_CSI     15
64ea1af9f2SPhilipp Tomsich #define	GT_PORT_MP      16
65ea1af9f2SPhilipp Tomsich #define	GT_PORT_HSI     17
66ea1af9f2SPhilipp Tomsich #define	GT_PORT_SS      18
67ea1af9f2SPhilipp Tomsich #define	GT_PORT_TS      19
68ea1af9f2SPhilipp Tomsich #define	GT_PORT_DMA     20
69ea1af9f2SPhilipp Tomsich #define	GT_PORT_NDFC0   21
70ea1af9f2SPhilipp Tomsich #define	GT_PORT_NDFC1   22
71ea1af9f2SPhilipp Tomsich #define	GT_PORT_CPUS    23
72ea1af9f2SPhilipp Tomsich #define	GT_PORT_TH      24
73ea1af9f2SPhilipp Tomsich #define	GT_PORT_GMAC    25
74ea1af9f2SPhilipp Tomsich #define	GT_PORT_USB0    26
75ea1af9f2SPhilipp Tomsich #define	GT_PORT_MSTG0   27
76ea1af9f2SPhilipp Tomsich #define	GT_PORT_MSTG1   28
77ea1af9f2SPhilipp Tomsich #define	GT_PORT_MSTG2   29
78ea1af9f2SPhilipp Tomsich #define	GT_PORT_MSTG3   30
79ea1af9f2SPhilipp Tomsich #define	GT_PORT_USB1    31
80ea1af9f2SPhilipp Tomsich #define	GT_PORT_GPU0    32
81ea1af9f2SPhilipp Tomsich #define	GT_PORT_GPU1    33
82ea1af9f2SPhilipp Tomsich #define	GT_PORT_USB2    34
83ea1af9f2SPhilipp Tomsich #define	GT_PORT_CPUM0   35
84ea1af9f2SPhilipp Tomsich 
85ea1af9f2SPhilipp Tomsich #define GP_MST_CFG_DEFAULT \
86ea1af9f2SPhilipp Tomsich 	((GT_QOS_MAX << GT_QOS_SHIFT)   | \
87ea1af9f2SPhilipp Tomsich 	 (GT_THD_MAX << GT_THD1_SHIFT)  | \
88ea1af9f2SPhilipp Tomsich 	 (GT_REQN_MAX << GT_REQN_SHIFT) | \
89ea1af9f2SPhilipp Tomsich 	 (GT_THD_MAX << GT_THD0_SHIFT))
90ea1af9f2SPhilipp Tomsich 
91ea1af9f2SPhilipp Tomsich #endif
92