1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Pin-multiplex helper macros for TI DaVinci family devices
5 * Author: Vladimir Barinov, MontaVista Software, Inc. <source@mvista.com>
7 * 2007 (c) MontaVista Software, Inc.
9 * Copyright (C) 2008 Texas Instruments.
11 #ifndef _MACH_DAVINCI_MUX_H_
12 #define _MACH_DAVINCI_MUX_H_
16 const char *mux_reg_name;
17 const unsigned char mux_reg;
18 const unsigned char mask_offset;
19 const unsigned char mask;
20 const unsigned char mode;
24 enum davinci_dm644x_index {
25 /* ATA and HDDIR functions */
70 /* EMAC and MDIO function */
73 /* GPIO3V[0:16] pins */
90 enum davinci_dm646x_index {
102 DM646X_STSOMUX_DISABLE,
103 DM646X_STSIMUX_DISABLE,
104 DM646X_PTSOMUX_DISABLE,
105 DM646X_PTSIMUX_DISABLE,
110 DM646X_PTSOMUX_PARALLEL,
111 DM646X_PTSIMUX_PARALLEL,
112 DM646X_PTSOMUX_SERIAL,
113 DM646X_PTSIMUX_SERIAL,
116 enum davinci_dm355_index {
147 DM355_INT_EDMA_TC0_ERR,
148 DM355_INT_EDMA_TC1_ERR,
150 /* EDMA event muxing */
157 DM355_VOUT_FIELD_G70,
162 /* Video In Pin Mux */
172 enum davinci_dm365_index {
301 DM365_VOUT_FIELD_G81,
313 DM365_INT_EDMA_TC0_ERR,
314 DM365_INT_EDMA_TC1_ERR,
315 DM365_INT_EDMA_TC2_ERR,
316 DM365_INT_EDMA_TC3_ERR,
318 DM365_INT_EMAC_RXTHRESH,
319 DM365_INT_EMAC_RXPULSE,
320 DM365_INT_EMAC_TXPULSE,
321 DM365_INT_EMAC_MISCPULSE,
322 DM365_INT_IMX0_ENABLE,
323 DM365_INT_IMX0_DISABLE,
324 DM365_INT_HDVICP_ENABLE,
325 DM365_INT_HDVICP_DISABLE,
326 DM365_INT_IMX1_ENABLE,
327 DM365_INT_IMX1_DISABLE,
328 DM365_INT_NSF_ENABLE,
329 DM365_INT_NSF_DISABLE,
331 /* EDMA event muxing */
487 DA830_RMII_MHZ_50_CLK,
694 DA830_NLCD_AC_ENB_CS,
743 enum davinci_da850_index {
795 DA850_RMII_MHZ_50_CLK,
842 DA850_NLCD_AC_ENB_CS,
844 /* MMC/SD0 function */
852 /* MMC/SD1 function */
860 /* EMIF2.5/EMIFA function */
967 #define PINMUX(x) (4 * (x))
969 #ifdef CONFIG_DAVINCI_MUX
970 /* setup pin muxing */
971 extern int davinci_cfg_reg(unsigned long reg_cfg);
972 extern int davinci_cfg_reg_list(const short pins[]);
974 /* boot loader does it all (no warnings from CONFIG_DAVINCI_MUX_WARNINGS) */
975 static inline int davinci_cfg_reg(unsigned long reg_cfg) { return 0; }
976 static inline int davinci_cfg_reg_list(const short pins[])
983 #define MUX_CFG(soc, desc, muxreg, mode_offset, mode_mask, mux_mode, dbg)\
987 .mux_reg_name = "PINMUX"#muxreg, \
988 .mux_reg = PINMUX(muxreg), \
989 .mask_offset = mode_offset, \
994 #define INT_CFG(soc, desc, mode_offset, mode_mask, mux_mode, dbg) \
998 .mux_reg_name = "INTMUX", \
1000 .mask_offset = mode_offset, \
1001 .mask = mode_mask, \
1005 #define EVT_CFG(soc, desc, mode_offset, mode_mask, mux_mode, dbg) \
1006 [soc##_##desc] = { \
1009 .mux_reg_name = "EVTMUX", \
1010 .mux_reg = EVTMUX, \
1011 .mask_offset = mode_offset, \
1012 .mask = mode_mask, \
1016 #endif /* _MACH_DAVINCI_MUX_H */