xref: /freebsd/sys/contrib/device-tree/src/arm/st/st-pincfg.h (revision aa1a8ff2d6dbc51ef058f46f3db5a8bb77967145)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ST_PINCFG_H_
3 #define _ST_PINCFG_H_
4 
5 /* Alternate functions */
6 #define ALT1	1
7 #define ALT2	2
8 #define ALT3	3
9 #define ALT4	4
10 #define ALT5	5
11 #define ALT6	6
12 #define ALT7	7
13 
14 /* Output enable */
15 #define OE			(1 << 27)
16 /* Pull Up */
17 #define PU			(1 << 26)
18 /* Open Drain */
19 #define OD			(1 << 25)
20 #define RT			(1 << 23)
21 #define INVERTCLK		(1 << 22)
22 #define CLKNOTDATA		(1 << 21)
23 #define DOUBLE_EDGE		(1 << 20)
24 #define CLK_A			(0 << 18)
25 #define CLK_B			(1 << 18)
26 #define CLK_C			(2 << 18)
27 #define CLK_D			(3 << 18)
28 
29 /* User-frendly defines for Pin Direction */
30 		/* oe = 0, pu = 0, od = 0 */
31 #define IN			(0)
32 		/* oe = 0, pu = 1, od = 0 */
33 #define IN_PU			(PU)
34 		/* oe = 1, pu = 0, od = 0 */
35 #define OUT			(OE)
36 		/* oe = 1, pu = 0, od = 1 */
37 #define BIDIR			(OE | OD)
38 		/* oe = 1, pu = 1, od = 1 */
39 #define BIDIR_PU		(OE | PU | OD)
40 
41 /* RETIME_TYPE */
42 /*
43  * B Mode
44  * Bypass retime with optional delay parameter
45  */
46 #define BYPASS		(0)
47 /*
48  * R0, R1, R0D, R1D modes
49  * single-edge data non inverted clock, retime data with clk
50  */
51 #define SE_NICLK_IO	(RT)
52 /*
53  * RIV0, RIV1, RIV0D, RIV1D modes
54  * single-edge data inverted clock, retime data with clk
55  */
56 #define SE_ICLK_IO	(RT | INVERTCLK)
57 /*
58  * R0E, R1E, R0ED, R1ED modes
59  * double-edge data, retime data with clk
60  */
61 #define DE_IO		(RT | DOUBLE_EDGE)
62 /*
63  * CIV0, CIV1 modes with inverted clock
64  * Retiming the clk pins will park clock & reduce the noise within the core.
65  */
66 #define ICLK		(RT | CLKNOTDATA | INVERTCLK)
67 /*
68  * CLK0, CLK1 modes with non-inverted clock
69  * Retiming the clk pins will park clock & reduce the noise within the core.
70  */
71 #define NICLK		(RT | CLKNOTDATA)
72 #endif /* _ST_PINCFG_H_ */
73