]> git.ipfire.org Git - thirdparty/u-boot.git/blame - include/firmware/imx/sci/types.h
imx: move imx8 sci header file to include/firmware/imx
[thirdparty/u-boot.git] / include / firmware / imx / sci / types.h
CommitLineData
bf494d7e
PF
1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright 2018 NXP
4 */
5
6#ifndef SC_TYPES_H
7#define SC_TYPES_H
8
9/* Includes */
10#include <linux/types.h>
11
12/* Defines */
13/*
14 * This type is used to declare a handle for an IPC communication
15 * channel. Its meaning is specific to the IPC implementation.
16 */
17typedef u64 sc_ipc_t;
18
19/* Defines for common frequencies */
20#define SC_32KHZ 32768U /* 32KHz */
21#define SC_10MHZ 10000000U /* 10MHz */
22#define SC_20MHZ 20000000U /* 20MHz */
23#define SC_25MHZ 25000000U /* 25MHz */
24#define SC_27MHZ 27000000U /* 27MHz */
25#define SC_40MHZ 40000000U /* 40MHz */
26#define SC_45MHZ 45000000U /* 45MHz */
27#define SC_50MHZ 50000000U /* 50MHz */
28#define SC_60MHZ 60000000U /* 60MHz */
29#define SC_66MHZ 66666666U /* 66MHz */
30#define SC_74MHZ 74250000U /* 74.25MHz */
31#define SC_80MHZ 80000000U /* 80MHz */
32#define SC_83MHZ 83333333U /* 83MHz */
33#define SC_84MHZ 84375000U /* 84.37MHz */
34#define SC_100MHZ 100000000U /* 100MHz */
73d769d8 35#define SC_114MHZ 114000000U /* 114MHz */
bf494d7e
PF
36#define SC_125MHZ 125000000U /* 125MHz */
37#define SC_133MHZ 133333333U /* 133MHz */
38#define SC_135MHZ 135000000U /* 135MHz */
39#define SC_150MHZ 150000000U /* 150MHz */
40#define SC_160MHZ 160000000U /* 160MHz */
41#define SC_166MHZ 166666666U /* 166MHz */
42#define SC_175MHZ 175000000U /* 175MHz */
43#define SC_180MHZ 180000000U /* 180MHz */
44#define SC_200MHZ 200000000U /* 200MHz */
45#define SC_250MHZ 250000000U /* 250MHz */
46#define SC_266MHZ 266666666U /* 266MHz */
47#define SC_300MHZ 300000000U /* 300MHz */
48#define SC_312MHZ 312500000U /* 312.5MHZ */
49#define SC_320MHZ 320000000U /* 320MHz */
50#define SC_325MHZ 325000000U /* 325MHz */
51#define SC_333MHZ 333333333U /* 333MHz */
52#define SC_350MHZ 350000000U /* 350MHz */
53#define SC_372MHZ 372000000U /* 372MHz */
54#define SC_375MHZ 375000000U /* 375MHz */
55#define SC_400MHZ 400000000U /* 400MHz */
73d769d8 56#define SC_465MHZ 465000000U /* 465MHz */
bf494d7e
PF
57#define SC_500MHZ 500000000U /* 500MHz */
58#define SC_594MHZ 594000000U /* 594MHz */
59#define SC_625MHZ 625000000U /* 625MHz */
60#define SC_640MHZ 640000000U /* 640MHz */
61#define SC_650MHZ 650000000U /* 650MHz */
62#define SC_667MHZ 666666667U /* 667MHz */
63#define SC_675MHZ 675000000U /* 675MHz */
64#define SC_700MHZ 700000000U /* 700MHz */
65#define SC_720MHZ 720000000U /* 720MHz */
66#define SC_750MHZ 750000000U /* 750MHz */
67#define SC_800MHZ 800000000U /* 800MHz */
68#define SC_850MHZ 850000000U /* 850MHz */
69#define SC_900MHZ 900000000U /* 900MHz */
70#define SC_1000MHZ 1000000000U /* 1GHz */
71#define SC_1060MHZ 1060000000U /* 1.06GHz */
72#define SC_1188MHZ 1188000000U /* 1.188GHz */
73#define SC_1260MHZ 1260000000U /* 1.26GHz */
74#define SC_1280MHZ 1280000000U /* 1.28GHz */
75#define SC_1300MHZ 1300000000U /* 1.3GHz */
76#define SC_1400MHZ 1400000000U /* 1.4GHz */
77#define SC_1500MHZ 1500000000U /* 1.5GHz */
78#define SC_1600MHZ 1600000000U /* 1.6GHz */
79#define SC_1800MHZ 1800000000U /* 1.8GHz */
73d769d8 80#define SC_1860MHZ 1860000000U /* 1.86GHz */
bf494d7e
PF
81#define SC_2000MHZ 2000000000U /* 2.0GHz */
82#define SC_2112MHZ 2112000000U /* 2.12GHz */
83
84/* Defines for 24M related frequencies */
85#define SC_8MHZ 8000000U /* 8MHz */
86#define SC_12MHZ 12000000U /* 12MHz */
87#define SC_19MHZ 19800000U /* 19.8MHz */
88#define SC_24MHZ 24000000U /* 24MHz */
89#define SC_48MHZ 48000000U /* 48MHz */
90#define SC_120MHZ 120000000U /* 120MHz */
91#define SC_132MHZ 132000000U /* 132MHz */
92#define SC_144MHZ 144000000U /* 144MHz */
93#define SC_192MHZ 192000000U /* 192MHz */
94#define SC_211MHZ 211200000U /* 211.2MHz */
73d769d8 95#define SC_228MHZ 228000000U /* 233MHz */
bf494d7e
PF
96#define SC_240MHZ 240000000U /* 240MHz */
97#define SC_264MHZ 264000000U /* 264MHz */
98#define SC_352MHZ 352000000U /* 352MHz */
99#define SC_360MHZ 360000000U /* 360MHz */
100#define SC_384MHZ 384000000U /* 384MHz */
101#define SC_396MHZ 396000000U /* 396MHz */
102#define SC_432MHZ 432000000U /* 432MHz */
73d769d8 103#define SC_456MHZ 456000000U /* 466MHz */
bf494d7e
PF
104#define SC_480MHZ 480000000U /* 480MHz */
105#define SC_600MHZ 600000000U /* 600MHz */
106#define SC_744MHZ 744000000U /* 744MHz */
107#define SC_792MHZ 792000000U /* 792MHz */
108#define SC_864MHZ 864000000U /* 864MHz */
73d769d8 109#define SC_912MHZ 912000000U /* 912MHz */
bf494d7e
PF
110#define SC_960MHZ 960000000U /* 960MHz */
111#define SC_1056MHZ 1056000000U /* 1056MHz */
112#define SC_1104MHZ 1104000000U /* 1104MHz */
113#define SC_1200MHZ 1200000000U /* 1.2GHz */
114#define SC_1464MHZ 1464000000U /* 1.464GHz */
115#define SC_2400MHZ 2400000000U /* 2.4GHz */
116
117/* Defines for A/V related frequencies */
118#define SC_62MHZ 62937500U /* 62.9375MHz */
119#define SC_755MHZ 755250000U /* 755.25MHz */
120
121/* Defines for type widths */
122#define SC_FADDR_W 36U /* Width of sc_faddr_t */
123#define SC_BOOL_W 1U /* Width of sc_bool_t */
124#define SC_ERR_W 4U /* Width of sc_err_t */
125#define SC_RSRC_W 10U /* Width of sc_rsrc_t */
126#define SC_CTRL_W 6U /* Width of sc_ctrl_t */
127
128/* Defines for sc_bool_t */
129#define SC_FALSE ((sc_bool_t)0U)
130#define SC_TRUE ((sc_bool_t)1U)
131
132/* Defines for sc_err_t */
133#define SC_ERR_NONE 0U /* Success */
134#define SC_ERR_VERSION 1U /* Incompatible API version */
135#define SC_ERR_CONFIG 2U /* Configuration error */
136#define SC_ERR_PARM 3U /* Bad parameter */
137#define SC_ERR_NOACCESS 4U /* Permission error (no access) */
138#define SC_ERR_LOCKED 5U /* Permission error (locked) */
139#define SC_ERR_UNAVAILABLE 6U /* Unavailable (out of resources) */
140#define SC_ERR_NOTFOUND 7U /* Not found */
141#define SC_ERR_NOPOWER 8U /* No power */
142#define SC_ERR_IPC 9U /* Generic IPC error */
143#define SC_ERR_BUSY 10U /* Resource is currently busy/active */
144#define SC_ERR_FAIL 11U /* General I/O failure */
145#define SC_ERR_LAST 12U
146
147/* Defines for sc_ctrl_t. */
148#define SC_C_TEMP 0U
149#define SC_C_TEMP_HI 1U
150#define SC_C_TEMP_LOW 2U
151#define SC_C_PXL_LINK_MST1_ADDR 3U
152#define SC_C_PXL_LINK_MST2_ADDR 4U
153#define SC_C_PXL_LINK_MST_ENB 5U
154#define SC_C_PXL_LINK_MST1_ENB 6U
155#define SC_C_PXL_LINK_MST2_ENB 7U
156#define SC_C_PXL_LINK_SLV1_ADDR 8U
157#define SC_C_PXL_LINK_SLV2_ADDR 9U
158#define SC_C_PXL_LINK_MST_VLD 10U
159#define SC_C_PXL_LINK_MST1_VLD 11U
160#define SC_C_PXL_LINK_MST2_VLD 12U
161#define SC_C_SINGLE_MODE 13U
162#define SC_C_ID 14U
163#define SC_C_PXL_CLK_POLARITY 15U
164#define SC_C_LINESTATE 16U
165#define SC_C_PCIE_G_RST 17U
166#define SC_C_PCIE_BUTTON_RST 18U
167#define SC_C_PCIE_PERST 19U
168#define SC_C_PHY_RESET 20U
169#define SC_C_PXL_LINK_RATE_CORRECTION 21U
170#define SC_C_PANIC 22U
171#define SC_C_PRIORITY_GROUP 23U
172#define SC_C_TXCLK 24U
173#define SC_C_CLKDIV 25U
174#define SC_C_DISABLE_50 26U
175#define SC_C_DISABLE_125 27U
176#define SC_C_SEL_125 28U
177#define SC_C_MODE 29U
178#define SC_C_SYNC_CTRL0 30U
179#define SC_C_KACHUNK_CNT 31U
180#define SC_C_KACHUNK_SEL 32U
181#define SC_C_SYNC_CTRL1 33U
182#define SC_C_DPI_RESET 34U
183#define SC_C_MIPI_RESET 35U
184#define SC_C_DUAL_MODE 36U
185#define SC_C_VOLTAGE 37U
186#define SC_C_PXL_LINK_SEL 38U
187#define SC_C_OFS_SEL 39U
188#define SC_C_OFS_AUDIO 40U
189#define SC_C_OFS_PERIPH 41U
190#define SC_C_OFS_IRQ 42U
191#define SC_C_RST0 43U
192#define SC_C_RST1 44U
193#define SC_C_SEL0 45U
194#define SC_C_LAST 46U
195
196#define SC_P_ALL ((sc_pad_t)UINT16_MAX) /* All pads */
197
198/* Types */
199
200/* This type is used to store a boolean */
201typedef u8 sc_bool_t;
202
203/* This type is used to store a system (full-size) address. */
204typedef u64 sc_faddr_t;
205
206/* This type is used to indicate error response for most functions. */
207typedef u8 sc_err_t;
208
209/*
210 * This type is used to indicate a resource. Resources include peripherals
211 * and bus masters (but not memory regions). Note items from list should
212 * never be changed or removed (only added to at the end of the list).
213 */
214typedef u16 sc_rsrc_t;
215
216/* This type is used to indicate a control. */
217typedef u8 sc_ctrl_t;
218
219/*
220 * This type is used to indicate a pad. Valid values are SoC specific.
221 *
222 * Refer to the SoC [Pad List](@ref PADS) for valid pad values.
223 */
224typedef u16 sc_pad_t;
225
226#endif /* SC_TYPES_H */