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