xref: /openbmc/u-boot/board/eets/pdu001/mux.c (revision 7869e647a60ae706457bb601a3c2ea51e9fdd413)
183d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
285ab0452SFelix Brack /*
385ab0452SFelix Brack  * mux.c
485ab0452SFelix Brack  *
585ab0452SFelix Brack  * Copyright (C) 2018 EETS GmbH - http://www.eets.ch/
685ab0452SFelix Brack  *
785ab0452SFelix Brack  * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
885ab0452SFelix Brack  */
985ab0452SFelix Brack 
1085ab0452SFelix Brack #include <common.h>
11*a319229fSFelix Brack #include <i2c.h>
1285ab0452SFelix Brack #include <asm/arch/sys_proto.h>
1385ab0452SFelix Brack #include <asm/arch/hardware.h>
1485ab0452SFelix Brack #include <asm/arch/mux.h>
1585ab0452SFelix Brack #include <asm/io.h>
1685ab0452SFelix Brack #include "board.h"
1785ab0452SFelix Brack 
1885ab0452SFelix Brack static struct module_pin_mux uart0_pin_mux[] = {
1985ab0452SFelix Brack 	{OFFSET(uart0_rxd), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* UART0_RXD */
2085ab0452SFelix Brack 	{OFFSET(uart0_txd), (MODE(0) | PULLUDEN)},		/* UART0_TXD */
2185ab0452SFelix Brack 	{-1},
2285ab0452SFelix Brack };
2385ab0452SFelix Brack 
2485ab0452SFelix Brack static struct module_pin_mux uart1_pin_mux[] = {
2585ab0452SFelix Brack 	{OFFSET(uart1_rxd), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* UART1_RXD */
2685ab0452SFelix Brack 	{OFFSET(uart1_txd), (MODE(0) | PULLUDEN)},		/* UART1_TXD */
2785ab0452SFelix Brack 	{-1},
2885ab0452SFelix Brack };
2985ab0452SFelix Brack 
3085ab0452SFelix Brack static struct module_pin_mux uart2_pin_mux[] = {
3185ab0452SFelix Brack 	{OFFSET(spi0_sclk), (MODE(1) | PULLUP_EN | RXACTIVE)},	/* UART2_RXD */
3285ab0452SFelix Brack 	{OFFSET(spi0_d0), (MODE(1) | PULLUDEN)},		/* UART2_TXD */
3385ab0452SFelix Brack 	{-1},
3485ab0452SFelix Brack };
3585ab0452SFelix Brack 
3685ab0452SFelix Brack static struct module_pin_mux uart3_pin_mux[] = {
3785ab0452SFelix Brack 	{OFFSET(spi0_cs1), (MODE(1) | PULLUP_EN | RXACTIVE)},	/* UART3_RXD */
3885ab0452SFelix Brack 	{OFFSET(ecap0_in_pwm0_out), (MODE(1) | PULLUDEN)},	/* UART3_TXD */
3985ab0452SFelix Brack 	{-1},
4085ab0452SFelix Brack };
4185ab0452SFelix Brack 
4285ab0452SFelix Brack static struct module_pin_mux uart4_pin_mux[] = {
4385ab0452SFelix Brack 	{OFFSET(gpmc_wait0), (MODE(6) | PULLUP_EN | RXACTIVE)},	/* UART4_RXD */
4485ab0452SFelix Brack 	{OFFSET(gpmc_wpn), (MODE(6) | PULLUDEN)},		/* UART4_TXD */
4585ab0452SFelix Brack 	{-1},
4685ab0452SFelix Brack };
4785ab0452SFelix Brack 
4885ab0452SFelix Brack static struct module_pin_mux uart5_pin_mux[] = {
4985ab0452SFelix Brack 	{OFFSET(lcd_data9), (MODE(4) | PULLUP_EN | RXACTIVE)},	/* UART5_RXD */
5085ab0452SFelix Brack 	{OFFSET(lcd_data8), (MODE(4) | PULLUDEN)},		/* UART5_TXD */
5185ab0452SFelix Brack 	{-1},
5285ab0452SFelix Brack };
5385ab0452SFelix Brack 
5485ab0452SFelix Brack static struct module_pin_mux i2c0_pin_mux[] = {
5585ab0452SFelix Brack 	{OFFSET(i2c0_sda), (MODE(0) | RXACTIVE |
5685ab0452SFelix Brack 			PULLUDEN | SLEWCTRL)},			/* I2C_DATA  */
5785ab0452SFelix Brack 	{OFFSET(i2c0_scl), (MODE(0) | RXACTIVE |
5885ab0452SFelix Brack 			PULLUDEN | SLEWCTRL)},			/* I2C_SCLK  */
5985ab0452SFelix Brack 	{-1},
6085ab0452SFelix Brack };
6185ab0452SFelix Brack 
enable_uart0_pin_mux(void)6285ab0452SFelix Brack void enable_uart0_pin_mux(void)
6385ab0452SFelix Brack {
6485ab0452SFelix Brack 	configure_module_pin_mux(uart0_pin_mux);
6585ab0452SFelix Brack }
6685ab0452SFelix Brack 
enable_uart1_pin_mux(void)6785ab0452SFelix Brack void enable_uart1_pin_mux(void)
6885ab0452SFelix Brack {
6985ab0452SFelix Brack 	configure_module_pin_mux(uart1_pin_mux);
7085ab0452SFelix Brack }
7185ab0452SFelix Brack 
enable_uart2_pin_mux(void)7285ab0452SFelix Brack void enable_uart2_pin_mux(void)
7385ab0452SFelix Brack {
7485ab0452SFelix Brack 	configure_module_pin_mux(uart2_pin_mux);
7585ab0452SFelix Brack }
7685ab0452SFelix Brack 
enable_uart3_pin_mux(void)7785ab0452SFelix Brack void enable_uart3_pin_mux(void)
7885ab0452SFelix Brack {
7985ab0452SFelix Brack 	configure_module_pin_mux(uart3_pin_mux);
8085ab0452SFelix Brack }
8185ab0452SFelix Brack 
enable_uart4_pin_mux(void)8285ab0452SFelix Brack void enable_uart4_pin_mux(void)
8385ab0452SFelix Brack {
8485ab0452SFelix Brack 	configure_module_pin_mux(uart4_pin_mux);
8585ab0452SFelix Brack }
8685ab0452SFelix Brack 
enable_uart5_pin_mux(void)8785ab0452SFelix Brack void enable_uart5_pin_mux(void)
8885ab0452SFelix Brack {
8985ab0452SFelix Brack 	configure_module_pin_mux(uart5_pin_mux);
9085ab0452SFelix Brack }
9185ab0452SFelix Brack 
enable_uart_pin_mux(u32 addr)9285ab0452SFelix Brack void enable_uart_pin_mux(u32 addr)
9385ab0452SFelix Brack {
9485ab0452SFelix Brack 	switch (addr) {
9585ab0452SFelix Brack 	case CONFIG_SYS_NS16550_COM1:
9685ab0452SFelix Brack 		enable_uart0_pin_mux();
9785ab0452SFelix Brack 		break;
9885ab0452SFelix Brack 	case CONFIG_SYS_NS16550_COM2:
9985ab0452SFelix Brack 		enable_uart1_pin_mux();
10085ab0452SFelix Brack 		break;
10185ab0452SFelix Brack 	case CONFIG_SYS_NS16550_COM3:
10285ab0452SFelix Brack 		enable_uart2_pin_mux();
10385ab0452SFelix Brack 		break;
10485ab0452SFelix Brack 	case CONFIG_SYS_NS16550_COM4:
10585ab0452SFelix Brack 		enable_uart3_pin_mux();
10685ab0452SFelix Brack 		break;
10785ab0452SFelix Brack 	case CONFIG_SYS_NS16550_COM5:
10885ab0452SFelix Brack 		enable_uart4_pin_mux();
10985ab0452SFelix Brack 		break;
11085ab0452SFelix Brack 	case CONFIG_SYS_NS16550_COM6:
11185ab0452SFelix Brack 		enable_uart5_pin_mux();
11285ab0452SFelix Brack 		break;
11385ab0452SFelix Brack 	}
11485ab0452SFelix Brack }
11585ab0452SFelix Brack 
enable_i2c0_pin_mux(void)11685ab0452SFelix Brack void enable_i2c0_pin_mux(void)
11785ab0452SFelix Brack {
11885ab0452SFelix Brack 	configure_module_pin_mux(i2c0_pin_mux);
11985ab0452SFelix Brack }
120