1 // SPDX-License-Identifier: GPL-2.0+
4 * Marvell Semiconductor <www.marvell.com>
5 * Written-by: Prafulla Wadaskar <prafulla@marvell.com>,
11 #include <asm/arch/mfp.h>
16 * On most of Marvell SoCs (ex. ARMADA100) there is Multi-Funtion-Pin
17 * configuration registers to configure each GPIO/Function pin on the
20 * This function reads the array of values for
21 * MFPR_X registers and programms them into respective
22 * Multi-Function Pin registers.
23 * It supports - Alternate Function Selection programming.
26 * The Configureation value is constructed using MFP()
27 * array consists of 32bit values as defined in MFP(xx,xx..) macro
29 void mfp_config(u32 *mfp_cfgs)
35 cfg_val = *mfp_cfgs++;
36 /* exit if End of configuration table detected */
37 if (cfg_val == MFP_EOC)
40 p_mfpr = (u32 *)(MV_MFPR_BASE
41 + MFP_REG_GET_OFFSET(cfg_val));
43 /* Write a mfg register as per configuration */
45 if (cfg_val & MFP_VALUE_MASK)
46 val |= cfg_val & MFP_VALUE_MASK;
51 * perform a read-back of any MFPR register to make sure the
52 * previous writings are finished