summaryrefslogtreecommitdiff
path: root/arch/arm/include/asm/arch-imx8/sci/types.h
blob: 9eadc885923278776daab9db4afd1f8c12ba46d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
/* SPDX-License-Identifier:     GPL-2.0+ */
/*
 * Copyright 2018 NXP
 */

#ifndef SC_TYPES_H
#define SC_TYPES_H

/* Includes */
#include <linux/types.h>

/* Defines */
/*
 * This type is used to declare a handle for an IPC communication
 * channel. Its meaning is specific to the IPC implementation.
 */
typedef u64 sc_ipc_t;

/* Defines for common frequencies */
#define SC_32KHZ            32768U   /* 32KHz */
#define SC_10MHZ         10000000U   /* 10MHz */
#define SC_20MHZ         20000000U   /* 20MHz */
#define SC_25MHZ         25000000U   /* 25MHz */
#define SC_27MHZ         27000000U   /* 27MHz */
#define SC_40MHZ         40000000U   /* 40MHz */
#define SC_45MHZ         45000000U   /* 45MHz */
#define SC_50MHZ         50000000U   /* 50MHz */
#define SC_60MHZ         60000000U   /* 60MHz */
#define SC_66MHZ         66666666U   /* 66MHz */
#define SC_74MHZ         74250000U   /* 74.25MHz */
#define SC_80MHZ         80000000U   /* 80MHz */
#define SC_83MHZ         83333333U   /* 83MHz */
#define SC_84MHZ         84375000U   /* 84.37MHz */
#define SC_100MHZ       100000000U   /* 100MHz */
#define SC_125MHZ       125000000U   /* 125MHz */
#define SC_133MHZ       133333333U   /* 133MHz */
#define SC_135MHZ       135000000U   /* 135MHz */
#define SC_150MHZ       150000000U   /* 150MHz */
#define SC_160MHZ       160000000U   /* 160MHz */
#define SC_166MHZ       166666666U   /* 166MHz */
#define SC_175MHZ       175000000U   /* 175MHz */
#define SC_180MHZ       180000000U   /* 180MHz */
#define SC_200MHZ       200000000U   /* 200MHz */
#define SC_250MHZ       250000000U   /* 250MHz */
#define SC_266MHZ       266666666U   /* 266MHz */
#define SC_300MHZ       300000000U   /* 300MHz */
#define SC_312MHZ       312500000U   /* 312.5MHZ */
#define SC_320MHZ       320000000U   /* 320MHz */
#define SC_325MHZ       325000000U   /* 325MHz */
#define SC_333MHZ       333333333U   /* 333MHz */
#define SC_350MHZ       350000000U   /* 350MHz */
#define SC_372MHZ       372000000U   /* 372MHz */
#define SC_375MHZ       375000000U   /* 375MHz */
#define SC_400MHZ       400000000U   /* 400MHz */
#define SC_500MHZ       500000000U   /* 500MHz */
#define SC_594MHZ       594000000U   /* 594MHz */
#define SC_625MHZ       625000000U   /* 625MHz */
#define SC_640MHZ       640000000U   /* 640MHz */
#define SC_650MHZ       650000000U   /* 650MHz */
#define SC_667MHZ       666666667U   /* 667MHz */
#define SC_675MHZ       675000000U   /* 675MHz */
#define SC_700MHZ       700000000U   /* 700MHz */
#define SC_720MHZ       720000000U   /* 720MHz */
#define SC_750MHZ       750000000U   /* 750MHz */
#define SC_800MHZ       800000000U   /* 800MHz */
#define SC_850MHZ       850000000U   /* 850MHz */
#define SC_900MHZ       900000000U   /* 900MHz */
#define SC_1000MHZ     1000000000U   /* 1GHz */
#define SC_1060MHZ     1060000000U   /* 1.06GHz */
#define SC_1188MHZ     1188000000U   /* 1.188GHz */
#define SC_1260MHZ     1260000000U   /* 1.26GHz */
#define SC_1280MHZ     1280000000U   /* 1.28GHz */
#define SC_1300MHZ     1300000000U   /* 1.3GHz */
#define SC_1400MHZ     1400000000U   /* 1.4GHz */
#define SC_1500MHZ     1500000000U   /* 1.5GHz */
#define SC_1600MHZ     1600000000U   /* 1.6GHz */
#define SC_1800MHZ     1800000000U   /* 1.8GHz */
#define SC_2000MHZ     2000000000U   /* 2.0GHz */
#define SC_2112MHZ     2112000000U   /* 2.12GHz */

/* Defines for 24M related frequencies */
#define SC_8MHZ           8000000U   /* 8MHz */
#define SC_12MHZ         12000000U   /* 12MHz */
#define SC_19MHZ         19800000U   /* 19.8MHz */
#define SC_24MHZ         24000000U   /* 24MHz */
#define SC_48MHZ         48000000U   /* 48MHz */
#define SC_120MHZ       120000000U   /* 120MHz */
#define SC_132MHZ       132000000U   /* 132MHz */
#define SC_144MHZ       144000000U   /* 144MHz */
#define SC_192MHZ       192000000U   /* 192MHz */
#define SC_211MHZ       211200000U   /* 211.2MHz */
#define SC_240MHZ       240000000U   /* 240MHz */
#define SC_264MHZ       264000000U   /* 264MHz */
#define SC_352MHZ       352000000U   /* 352MHz */
#define SC_360MHZ       360000000U   /* 360MHz */
#define SC_384MHZ       384000000U   /* 384MHz */
#define SC_396MHZ       396000000U   /* 396MHz */
#define SC_432MHZ       432000000U   /* 432MHz */
#define SC_480MHZ       480000000U   /* 480MHz */
#define SC_600MHZ       600000000U   /* 600MHz */
#define SC_744MHZ       744000000U   /* 744MHz */
#define SC_792MHZ       792000000U   /* 792MHz */
#define SC_864MHZ       864000000U   /* 864MHz */
#define SC_960MHZ       960000000U   /* 960MHz */
#define SC_1056MHZ     1056000000U   /* 1056MHz */
#define SC_1104MHZ     1104000000U   /* 1104MHz */
#define SC_1200MHZ     1200000000U   /* 1.2GHz */
#define SC_1464MHZ     1464000000U   /* 1.464GHz */
#define SC_2400MHZ     2400000000U   /* 2.4GHz */

/* Defines for A/V related frequencies */
#define SC_62MHZ         62937500U   /* 62.9375MHz */
#define SC_755MHZ       755250000U   /* 755.25MHz */

/* Defines for type widths */
#define SC_FADDR_W      36U          /* Width of sc_faddr_t */
#define SC_BOOL_W       1U           /* Width of sc_bool_t */
#define SC_ERR_W        4U           /* Width of sc_err_t */
#define SC_RSRC_W       10U          /* Width of sc_rsrc_t */
#define SC_CTRL_W       6U           /* Width of sc_ctrl_t */

/* Defines for sc_bool_t */
#define SC_FALSE        ((sc_bool_t)0U)
#define SC_TRUE         ((sc_bool_t)1U)

/* Defines for sc_err_t */
#define SC_ERR_NONE         0U      /* Success */
#define SC_ERR_VERSION      1U      /* Incompatible API version */
#define SC_ERR_CONFIG       2U      /* Configuration error */
#define SC_ERR_PARM         3U      /* Bad parameter */
#define SC_ERR_NOACCESS     4U      /* Permission error (no access) */
#define SC_ERR_LOCKED       5U      /* Permission error (locked) */
#define SC_ERR_UNAVAILABLE  6U      /* Unavailable (out of resources) */
#define SC_ERR_NOTFOUND     7U      /* Not found */
#define SC_ERR_NOPOWER      8U      /* No power */
#define SC_ERR_IPC          9U      /* Generic IPC error */
#define SC_ERR_BUSY         10U     /* Resource is currently busy/active */
#define SC_ERR_FAIL         11U     /* General I/O failure */
#define SC_ERR_LAST         12U

/* Defines for sc_ctrl_t. */
#define SC_C_TEMP                       0U
#define SC_C_TEMP_HI                    1U
#define SC_C_TEMP_LOW                   2U
#define SC_C_PXL_LINK_MST1_ADDR         3U
#define SC_C_PXL_LINK_MST2_ADDR         4U
#define SC_C_PXL_LINK_MST_ENB           5U
#define SC_C_PXL_LINK_MST1_ENB          6U
#define SC_C_PXL_LINK_MST2_ENB          7U
#define SC_C_PXL_LINK_SLV1_ADDR         8U
#define SC_C_PXL_LINK_SLV2_ADDR         9U
#define SC_C_PXL_LINK_MST_VLD           10U
#define SC_C_PXL_LINK_MST1_VLD          11U
#define SC_C_PXL_LINK_MST2_VLD          12U
#define SC_C_SINGLE_MODE                13U
#define SC_C_ID                         14U
#define SC_C_PXL_CLK_POLARITY           15U
#define SC_C_LINESTATE                  16U
#define SC_C_PCIE_G_RST                 17U
#define SC_C_PCIE_BUTTON_RST            18U
#define SC_C_PCIE_PERST                 19U
#define SC_C_PHY_RESET                  20U
#define SC_C_PXL_LINK_RATE_CORRECTION   21U
#define SC_C_PANIC                      22U
#define SC_C_PRIORITY_GROUP             23U
#define SC_C_TXCLK                      24U
#define SC_C_CLKDIV                     25U
#define SC_C_DISABLE_50                 26U
#define SC_C_DISABLE_125                27U
#define SC_C_SEL_125                    28U
#define SC_C_MODE                       29U
#define SC_C_SYNC_CTRL0                 30U
#define SC_C_KACHUNK_CNT                31U
#define SC_C_KACHUNK_SEL                32U
#define SC_C_SYNC_CTRL1                 33U
#define SC_C_DPI_RESET                  34U
#define SC_C_MIPI_RESET                 35U
#define SC_C_DUAL_MODE                  36U
#define SC_C_VOLTAGE                    37U
#define SC_C_PXL_LINK_SEL               38U
#define SC_C_OFS_SEL                    39U
#define SC_C_OFS_AUDIO                  40U
#define SC_C_OFS_PERIPH                 41U
#define SC_C_OFS_IRQ                    42U
#define SC_C_RST0                       43U
#define SC_C_RST1                       44U
#define SC_C_SEL0                       45U
#define SC_C_LAST                       46U

#define SC_P_ALL        ((sc_pad_t)UINT16_MAX)   /* All pads */

/* Types */

/* This type is used to store a boolean */
typedef u8 sc_bool_t;

/* This type is used to store a system (full-size) address.  */
typedef u64 sc_faddr_t;

/* This type is used to indicate error response for most functions.  */
typedef u8 sc_err_t;

/*
 * This type is used to indicate a resource. Resources include peripherals
 * and bus masters (but not memory regions). Note items from list should
 * never be changed or removed (only added to at the end of the list).
 */
typedef u16 sc_rsrc_t;

/* This type is used to indicate a control.  */
typedef u8 sc_ctrl_t;

/*
 * This type is used to indicate a pad. Valid values are SoC specific.
 *
 * Refer to the SoC [Pad List](@ref PADS) for valid pad values.
 */
typedef u16 sc_pad_t;

#endif /* SC_TYPES_H */