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