hc
2024-08-16 a24a44ff9ca902811b99aa9663d697cf452e08ef
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
/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
/*
 * This header provides macros for Rockchip SerDes device bindings.
 *
 * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
 */
 
#ifndef __DT_BINDINGS_MFD_ROCKCHIP_SERDES_H
#define __DT_BINDINGS_MFD_ROCKCHIP_SERDES_H
 
#define RK_SERDES_RGB_RX    (1 << 0)
#define RK_SERDES_LVDS_RX0    (1 << 1)
#define RK_SERDES_LVDS_RX1    (1 << 2)
#define RK_SERDES_DSI_RX0    (1 << 3)
#define RK_SERDES_DSI_RX1    (1 << 4)
#define RK_SERDES_DUAL_LVDS_RX    (1 << 5)
 
#define RK_SERDES_RGB_TX    (1 << 0)
#define RK_SERDES_LVDS_TX0    (1 << 1)
#define RK_SERDES_LVDS_TX1    (1 << 2)
#define RK_SERDES_DSI_TX0    (1 << 3)
#define RK_SERDES_DSI_TX1    (1 << 4)
#define RK_SERDES_DUAL_LVDS_TX    (1 << 5)
 
/* Serdes camera stream port */
#define RK_SERDES_CSI_RX0    (1 << 16)
#define RK_SERDES_DVP_RX    (1 << 18)
 
#define RK_SERDES_CSI_TX0    (1 << 16)
#define RK_SERDES_CSI_TX1    (1 << 17)
#define RK_SERDES_DVP_TX    (1 << 18)
 
/* Serdes chip type */
#define RK_SERDES_CHIP_LOCAL    0
#define RK_SERDES_CHIP_REMOTE0    1
#define RK_SERDES_CHIP_REMOTE1    2
 
/* Seredes pin control */
#define RK_SERDES_SER_GPIO_BANK0    (0)
#define RK_SERDES_SER_GPIO_BANK1    (1)
#define RK_SERDES_DES_GPIO_BANK0    (5)
#define RK_SERDES_DES_GPIO_BANK1    (6)
 
/*
 * Elements values convention: ffff f000 0000 00ss dddd dddd eepp xxxx
 * - ffff f : Flag MUX/PUL/PEN/DRV/SMT
 * - ss : Schmitt value
 * - dddd dddd : Drive Level value
 * - ee : Pull Enable value
 * - pp : Pull Mode value
 * - xxxx : IOMUX Function value
 */
#define RK_SERDES_FLAG_MUX    (1 << 31)
#define RK_SERDES_FLAG_PUL    (1 << 30)
#define RK_SERDES_FLAG_PEN    (1 << 29)
#define RK_SERDES_FLAG_DRV    (1 << 28)
#define RK_SERDES_FLAG_SMT    (1 << 27)
#define RK_SERDES_SHIFT_MUX    (0)
#define RK_SERDES_SHIFT_PUL    (4)
#define RK_SERDES_SHIFT_PEN    (6)
#define RK_SERDES_SHIFT_DRV    (8)
#define RK_SERDES_SHIFT_SMT    (16)
#define RK_SERDES_MASK_MUX    (0xFU << RK_SERDES_SHIFT_MUX)
#define RK_SERDES_MASK_PUL    (0x3U << RK_SERDES_SHIFT_PUL)
#define RK_SERDES_MASK_PEN    (0x3U << RK_SERDES_SHIFT_PEN)
#define RK_SERDES_MASK_DRV    (0xFFU << RK_SERDES_SHIFT_DRV)
#define RK_SERDES_MASK_SMT    (0x3U << RK_SERDES_SHIFT_SMT)
 
#define RK_SERDES_PIN_CONFIG_MUX_FUNC0        (0x0 << RK_SERDES_SHIFT_MUX | RK_SERDES_FLAG_MUX)
#define RK_SERDES_PIN_CONFIG_MUX_FUNC1        (0x1 << RK_SERDES_SHIFT_MUX | RK_SERDES_FLAG_MUX)
#define RK_SERDES_PIN_CONFIG_MUX_FUNC2        (0x2 << RK_SERDES_SHIFT_MUX | RK_SERDES_FLAG_MUX)
#define RK_SERDES_PIN_CONFIG_MUX_FUNC3        (0x3 << RK_SERDES_SHIFT_MUX | RK_SERDES_FLAG_MUX)
#define RK_SERDES_PIN_CONFIG_MUX_FUNC4        (0x4 << RK_SERDES_SHIFT_MUX | RK_SERDES_FLAG_MUX)
#define RK_SERDES_PIN_CONFIG_MUX_FUNC5        (0x5 << RK_SERDES_SHIFT_MUX | RK_SERDES_FLAG_MUX)
#define RK_SERDES_PIN_CONFIG_MUX_FUNC6        (0x6 << RK_SERDES_SHIFT_MUX | RK_SERDES_FLAG_MUX)
#define RK_SERDES_PIN_CONFIG_MUX_FUNC7        (0x7 << RK_SERDES_SHIFT_MUX | RK_SERDES_FLAG_MUX)
#define RK_SERDES_PIN_CONFIG_MUX_DEFAULT    RK_SERDES_PIN_CONFIG_MUX_FUNC0
 
#define RK_SERDES_PIN_CONFIG_PUL_NORMAL        (0x0 << RK_SERDES_SHIFT_PUL | RK_SERDES_FLAG_PUL)
#define RK_SERDES_PIN_CONFIG_PUL_UP        (0x1 << RK_SERDES_SHIFT_PUL | RK_SERDES_FLAG_PUL)
#define RK_SERDES_PIN_CONFIG_PUL_DOWN        (0x2 << RK_SERDES_SHIFT_PUL | RK_SERDES_FLAG_PUL)
#define RK_SERDES_PIN_CONFIG_PUL_KEEP        (0x3 << RK_SERDES_SHIFT_PUL | RK_SERDES_FLAG_PUL)
#define RK_SERDES_PIN_CONFIG_PUL_DEFAULT    RK_SERDES_PIN_CONFIG_PUL_NORMAL
 
#define RK_SERDES_PIN_CONFIG_PEN_DISABLE    (0x0 << RK_SERDES_SHIFT_PEN | RK_SERDES_FLAG_PEN)
#define RK_SERDES_PIN_CONFIG_PEN_ENABLE        (0x1 << RK_SERDES_SHIFT_PEN | RK_SERDES_FLAG_PEN)
#define RK_SERDES_PIN_CONFIG_PEN_DEFAULT    RK_SERDES_PIN_CONFIG_PEN_DISABLE
 
#define RK_SERDES_PIN_CONFIG_DRV_LEVEL0        (0x0 << RK_SERDES_SHIFT_DRV | RK_SERDES_FLAG_DRV)
#define RK_SERDES_PIN_CONFIG_DRV_LEVEL1        (0x1 << RK_SERDES_SHIFT_DRV | RK_SERDES_FLAG_DRV)
#define RK_SERDES_PIN_CONFIG_DRV_LEVEL2        (0x2 << RK_SERDES_SHIFT_DRV | RK_SERDES_FLAG_DRV)
#define RK_SERDES_PIN_CONFIG_DRV_LEVEL3        (0x3 << RK_SERDES_SHIFT_DRV | RK_SERDES_FLAG_DRV)
#define RK_SERDES_PIN_CONFIG_DRV_LEVEL4        (0x4 << RK_SERDES_SHIFT_DRV | RK_SERDES_FLAG_DRV)
#define RK_SERDES_PIN_CONFIG_DRV_LEVEL5        (0x5 << RK_SERDES_SHIFT_DRV | RK_SERDES_FLAG_DRV)
#define RK_SERDES_PIN_CONFIG_DRV_LEVEL6        (0x6 << RK_SERDES_SHIFT_DRV | RK_SERDES_FLAG_DRV)
#define RK_SERDES_PIN_CONFIG_DRV_LEVEL7        (0x7 << RK_SERDES_SHIFT_DRV | RK_SERDES_FLAG_DRV)
#define RK_SERDES_PIN_CONFIG_DRV_LEVEL_DEFAULT    RK_SERDES_PIN_CONFIG_DRV_LEVEL2
 
#define RK_SERDES_PIN_CONFIG_SMT_DISABLE    (0x0 << RK_SERDES_SHIFT_SMT | RK_SERDES_FLAG_SMT)
#define RK_SERDES_PIN_CONFIG_SMT_ENABLE        (0x1 << RK_SERDES_SHIFT_SMT | RK_SERDES_FLAG_SMT)
#define RK_SERDES_PIN_CONFIG_SMT_DEFAULT    RK_SERDES_PIN_CONFIG_SMT_DISABLE
 
#define RK_SERDES_PIN_CONFIG_MAX        0xFFFFFFFFU
 
#define RK_SERDES_GPIO_PIN_A0            0x00000001U  /*!< Pin 0 selected    */
#define RK_SERDES_GPIO_PIN_A1            0x00000002U  /*!< Pin 1 selected    */
#define RK_SERDES_GPIO_PIN_A2            0x00000004U  /*!< Pin 2 selected    */
#define RK_SERDES_GPIO_PIN_A3            0x00000008U  /*!< Pin 3 selected    */
#define RK_SERDES_GPIO_PIN_A4            0x00000010U  /*!< Pin 4 selected    */
#define RK_SERDES_GPIO_PIN_A5            0x00000020U  /*!< Pin 5 selected    */
#define RK_SERDES_GPIO_PIN_A6            0x00000040U  /*!< Pin 6 selected    */
#define RK_SERDES_GPIO_PIN_A7            0x00000080U  /*!< Pin 7 selected    */
#define RK_SERDES_GPIO_PIN_B0            0x00000100U  /*!< Pin 8 selected    */
#define RK_SERDES_GPIO_PIN_B1            0x00000200U  /*!< Pin 9 selected    */
#define RK_SERDES_GPIO_PIN_B2            0x00000400U  /*!< Pin 10 selected   */
#define RK_SERDES_GPIO_PIN_B3            0x00000800U  /*!< Pin 11 selected   */
#define RK_SERDES_GPIO_PIN_B4            0x00001000U  /*!< Pin 12 selected   */
#define RK_SERDES_GPIO_PIN_B5            0x00002000U  /*!< Pin 13 selected   */
#define RK_SERDES_GPIO_PIN_B6            0x00004000U  /*!< Pin 14 selected   */
#define RK_SERDES_GPIO_PIN_B7            0x00008000U  /*!< Pin 15 selected   */
#define RK_SERDES_GPIO_PIN_C0            0x00010000U  /*!< Pin 16 selected   */
#define RK_SERDES_GPIO_PIN_C1            0x00020000U  /*!< Pin 17 selected   */
#define RK_SERDES_GPIO_PIN_C2            0x00040000U  /*!< Pin 18 selected   */
#define RK_SERDES_GPIO_PIN_C3            0x00080000U  /*!< Pin 19 selected   */
#define RK_SERDES_GPIO_PIN_C4            0x00100000U  /*!< Pin 20 selected   */
#define RK_SERDES_GPIO_PIN_C5            0x00200000U  /*!< Pin 21 selected   */
#define RK_SERDES_GPIO_PIN_C6            0x00400000U  /*!< Pin 22 selected   */
#define RK_SERDES_GPIO_PIN_C7            0x00800000U  /*!< Pin 23 selected   */
#define RK_SERDES_GPIO_PIN_D0            0x01000000U  /*!< Pin 24 selected   */
#define RK_SERDES_GPIO_PIN_D1            0x02000000U  /*!< Pin 25 selected   */
#define RK_SERDES_GPIO_PIN_D2            0x04000000U  /*!< Pin 26 selected   */
#define RK_SERDES_GPIO_PIN_D3            0x08000000U  /*!< Pin 27 selected   */
#define RK_SERDES_GPIO_PIN_D4            0x10000000U  /*!< Pin 28 selected   */
#define RK_SERDES_GPIO_PIN_D5            0x20000000U  /*!< Pin 29 selected   */
#define RK_SERDES_GPIO_PIN_D6            0x40000000U  /*!< Pin 30 selected   */
#define RK_SERDES_GPIO_PIN_D7            0x80000000U  /*!< Pin 31 selected   */
#define RK_SERDES_GPIO_PIN_ALL            (0xFFFFFFFFU)  /*!< All pins selected */
 
/* passthrough function */
#define RK_SERDES_PASSTHROUGH_GPI_GPO_0        (0)
#define RK_SERDES_PASSTHROUGH_GPI_GPO_1        (1)
#define RK_SERDES_PASSTHROUGH_GPI_GPO_2        (2)
#define RK_SERDES_PASSTHROUGH_GPI_GPO_3        (3)
#define RK_SERDES_PASSTHROUGH_GPI_GPO_4        (4)
#define RK_SERDES_PASSTHROUGH_GPI_GPO_5        (5)
#define RK_SERDES_PASSTHROUGH_GPI_GPO_6        (6)
#define RK_SERDES_PASSTHROUGH_IRQ        (7)
#define RK_SERDES_PASSTHROUGH_UART_0        (8)
#define RK_SERDES_PASSTHROUGH_UART_1        (9)
#define RK_SERDES_PASSTHROUGH_SPI        (10)
#endif /* __DT_BINDINGS_MFD_ROCKCHIP_SERDES_H */