xref: /OK3568_Linux_fs/u-boot/arch/arm/mach-tegra/tegra210/funcmux.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * (C) Copyright 2013-2015
3*4882a593Smuzhiyun  * NVIDIA Corporation <www.nvidia.com>
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * SPDX-License-Identifier:     GPL-2.0+
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun /* Tegra210 high-level function multiplexing */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #include <common.h>
11*4882a593Smuzhiyun #include <asm/arch/clock.h>
12*4882a593Smuzhiyun #include <asm/arch/funcmux.h>
13*4882a593Smuzhiyun #include <asm/arch/pinmux.h>
14*4882a593Smuzhiyun 
funcmux_select(enum periph_id id,int config)15*4882a593Smuzhiyun int funcmux_select(enum periph_id id, int config)
16*4882a593Smuzhiyun {
17*4882a593Smuzhiyun 	int bad_config = config != FUNCMUX_DEFAULT;
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun 	switch (id) {
20*4882a593Smuzhiyun 	/*
21*4882a593Smuzhiyun 	 * Add other periph IDs here as needed.
22*4882a593Smuzhiyun 	 * Note that all pinmux/pads should have already
23*4882a593Smuzhiyun 	 * been set up in the board pinmux table in
24*4882a593Smuzhiyun 	 * pinmux-config-<board>.h for all periphs.
25*4882a593Smuzhiyun 	 * Leave this in for the odd case where a mux
26*4882a593Smuzhiyun 	 * needs to be changed on-the-fly.
27*4882a593Smuzhiyun 	 */
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun 	default:
30*4882a593Smuzhiyun 		debug("%s: invalid periph_id %d", __func__, id);
31*4882a593Smuzhiyun 		return -1;
32*4882a593Smuzhiyun 	}
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun 	if (bad_config) {
35*4882a593Smuzhiyun 		debug("%s: invalid config %d for periph_id %d", __func__,
36*4882a593Smuzhiyun 		      config, id);
37*4882a593Smuzhiyun 		return -1;
38*4882a593Smuzhiyun 	}
39*4882a593Smuzhiyun 	return 0;
40*4882a593Smuzhiyun }
41