diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c index baa3b14324..4bb54d20b6 100644 --- a/board/ti/am335x/board.c +++ b/board/ti/am335x/board.c @@ -51,6 +51,9 @@ DECLARE_GLOBAL_DATA_PTR; #define NETBIRD_GPIO_RST_GSM_N GPIO_TO_PIN(1, 24) #define NETBIRD_GPIO_WLAN_EN GPIO_TO_PIN(3, 10) #define NETBIRD_GPIO_BT_EN GPIO_TO_PIN(3, 4) +#define NETBIRD_GPIO_EN_GPS_ANT GPIO_TO_PIN(2, 24) +#define NETBIRD_GPIO_LED_A GPIO_TO_PIN(1, 14) +#define NETBIRD_GPIO_LED_B GPIO_TO_PIN(1, 15) #if defined(CONFIG_SPL_BUILD) || \ (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_DM_ETH)) @@ -577,6 +580,7 @@ int board_init(void) #endif if (board_is_nbhw16()) { + REQUEST_AND_SET_GPIO(NETBIRD_GPIO_LED_A); REQUEST_AND_SET_GPIO(NETBIRD_GPIO_RST_PHY_N); REQUEST_AND_SET_GPIO(NETBIRD_GPIO_RST_GSM_N); REQUEST_AND_SET_GPIO(NETBIRD_GPIO_WLAN_EN); diff --git a/board/ti/am335x/mux.c b/board/ti/am335x/mux.c index de3f139353..b74698c296 100644 --- a/board/ti/am335x/mux.c +++ b/board/ti/am335x/mux.c @@ -262,49 +262,93 @@ static struct module_pin_mux uart3_icev2_pin_mux[] = { {-1}, }; -static struct module_pin_mux rmii0_pin_mux_netbird[] = { - {OFFSET(mdio_clk), MODE(0) | PULLUDEN}, /* MDIO_CLK */ - {OFFSET(mdio_data), MODE(0) | PULLUP_EN | RXACTIVE }, /* MDIO_DATA */ - {OFFSET(mii1_crs), MODE(1) | PULLUDEN | RXACTIVE}, /* MII1_CRS */ - {OFFSET(mii1_rxerr), MODE(1) | PULLUDEN | RXACTIVE}, /* MII1_RXERR */ - {OFFSET(mii1_txen), MODE(1) | PULLUDEN}, /* MII1_TXEN */ - {OFFSET(mii1_txd0), MODE(1) | PULLUDEN}, /* MII1_TXD0 */ - {OFFSET(mii1_txd1), MODE(1) | PULLUDEN}, /* MII1_TXD1 */ - {OFFSET(mii1_rxd0), MODE(1) | PULLUDEN | RXACTIVE}, /* MII1_RXD0 */ - {OFFSET(mii1_rxd1), MODE(1) | PULLUDEN | RXACTIVE}, /* MII1_RXD1 */ - {OFFSET(rmii1_refclk), MODE(0) | PULLUDEN | RXACTIVE}, /* RMII1_REFCLK */ +static struct module_pin_mux uart0_netbird_pin_mux[] = { + {OFFSET(uart0_rxd), (MODE(0) | PULLUDEN | PULLUP_EN | RXACTIVE)}, /* UART0_RXD */ + {OFFSET(uart0_txd), (MODE(0) | PULLUDEN | PULLUP_EN)}, /* UART0_TXD */ {-1}, }; -static struct module_pin_mux rmii1_pin_mux_netbird[] = { - {OFFSET(gpmc_a9), MODE(3) | PULLUDEN | RXACTIVE}, /* MII2_CRS */ - {OFFSET(gpmc_wpn), MODE(3) | PULLUDEN | RXACTIVE}, /* MII2_RXERR */ - {OFFSET(gpmc_a0), MODE(3) | PULLUDEN}, /* MII2_TXEN */ - {OFFSET(gpmc_a5), MODE(3) | PULLUDEN}, /* MII2_TXD0 */ - {OFFSET(gpmc_a4), MODE(3) | PULLUDEN}, /* MII2_TXD1 */ - {OFFSET(gpmc_a11), MODE(3) | PULLUDEN | RXACTIVE}, /* MII1_RXD0 */ - {OFFSET(gpmc_a10), MODE(3) | PULLUDEN | RXACTIVE}, /* MII1_RXD1 */ - {OFFSET(mii1_col), MODE(1) | PULLUDEN | RXACTIVE}, /* RMII1_REFCLK */ +static struct module_pin_mux uart1_netbird_pin_mux[] = { + {OFFSET(uart1_rxd), (MODE(0) | PULLUDEN | PULLUP_EN | RXACTIVE)}, /* (D16) uart1_rxd.uart1_rxd */ + {OFFSET(uart1_txd), (MODE(0) | PULLUDEN | PULLUP_EN)}, /* (D15) uart1_txd.uart1_txd */ + {OFFSET(uart1_ctsn), (MODE(0) | PULLUDEN | PULLUP_EN | RXACTIVE)}, /* (D18) uart1_ctsn.uart1_ctsn */ + {OFFSET(uart1_rtsn), (MODE(0) | PULLUDEN | PULLUP_EN)}, /* (D17) uart1_rtsn.uart1_rtsn */ {-1}, }; -static struct module_pin_mux mmc0_sdio_pin_mux_netbird[] = { - {OFFSET(mmc0_clk), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* MMC0_CLK */ - {OFFSET(mmc0_cmd), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* MMC0_CMD */ - {OFFSET(mmc0_dat0), (MODE(0) | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT0 */ - {OFFSET(mmc0_dat1), (MODE(0) | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT1 */ - {OFFSET(mmc0_dat2), (MODE(0) | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT2 */ - {OFFSET(mmc0_dat3), (MODE(0) | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT3 */ +static struct module_pin_mux rmii0_netbird_pin_mux[] = { + {OFFSET(mii1_crs), MODE(1) | PULLUDDIS | RXACTIVE}, /* MII1_CRS */ + {OFFSET(mii1_rxerr), MODE(1) | PULLUDDIS | RXACTIVE}, /* MII1_RXERR */ + {OFFSET(mii1_txen), MODE(1) | PULLUDDIS }, /* MII1_TXEN */ + {OFFSET(mii1_txd0), MODE(1) | PULLUDDIS }, /* MII1_TXD0 */ + {OFFSET(mii1_txd1), MODE(1) | PULLUDDIS }, /* MII1_TXD1 */ + {OFFSET(mii1_rxd0), MODE(1) | PULLUDDIS | RXACTIVE }, /* MII1_RXD0 */ + {OFFSET(mii1_rxd1), MODE(1) | PULLUDDIS | RXACTIVE }, /* MII1_RXD1 */ + {OFFSET(rmii1_refclk), MODE(0) | PULLUDDIS | RXACTIVE}, /* RMII1_REFCLK */ + {OFFSET(mdio_clk), MODE(0) | PULLUDDIS }, /* MDIO_CLK */ + {OFFSET(mdio_data), MODE(0) | PULLUDEN | PULLUP_EN | RXACTIVE }, /* MDIO_DATA */ {-1}, }; -static struct module_pin_mux mmc1_emmc_pin_mux_netbird[] = { - {OFFSET(gpmc_csn1), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* MMC1_CLK */ - {OFFSET(gpmc_csn2), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* MMC1_CMD */ - {OFFSET(gpmc_ad0), (MODE(1) | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT0 */ - {OFFSET(gpmc_ad1), (MODE(1) | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT1 */ - {OFFSET(gpmc_ad2), (MODE(1) | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT2 */ - {OFFSET(gpmc_ad3), (MODE(1) | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT3 */ +static struct module_pin_mux rmii1_netbird_pin_mux[] = { + {OFFSET(gpmc_a9), MODE(3) | PULLUDDIS | RXACTIVE}, /* MII2_CRS */ + {OFFSET(gpmc_wpn), MODE(3) | PULLUDDIS | RXACTIVE}, /* MII2_RXERR */ + {OFFSET(gpmc_a0), MODE(3) | PULLUDDIS}, /* MII2_TXEN */ + {OFFSET(gpmc_a5), MODE(3) | PULLUDDIS}, /* MII2_TXD0 */ + {OFFSET(gpmc_a4), MODE(3) | PULLUDDIS}, /* MII2_TXD1 */ + {OFFSET(gpmc_a11), MODE(3) | PULLUDDIS | RXACTIVE}, /* MII1_RXD0 */ + {OFFSET(gpmc_a10), MODE(3) | PULLUDDIS | RXACTIVE}, /* MII1_RXD1 */ + {OFFSET(mii1_col), MODE(1) | PULLUDDIS | RXACTIVE}, /* RMII1_REFCLK */ + {-1}, +}; + +static struct module_pin_mux mmc0_sdio_netbird_pin_mux[] = { + {OFFSET(mmc0_clk), (MODE(0) | PULLUDEN | PULLUP_EN | RXACTIVE)}, /* MMC0_CLK */ + {OFFSET(mmc0_cmd), (MODE(0) | PULLUDEN | PULLUP_EN)}, /* MMC0_CMD */ + {OFFSET(mmc0_dat0), (MODE(0) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT0 */ + {OFFSET(mmc0_dat1), (MODE(0) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT1 */ + {OFFSET(mmc0_dat2), (MODE(0) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT2 */ + {OFFSET(mmc0_dat3), (MODE(0) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT3 */ + {-1}, +}; + +static struct module_pin_mux mmc1_emmc_netbird_pin_mux[] = { + {OFFSET(gpmc_csn1), (MODE(2) | PULLUDEN | PULLUP_EN | RXACTIVE)}, /* MMC1_CLK */ + {OFFSET(gpmc_csn2), (MODE(2) | PULLUDEN | PULLUP_EN | RXACTIVE)}, /* MMC1_CMD */ + {OFFSET(gpmc_ad0), (MODE(1) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT0 */ + {OFFSET(gpmc_ad1), (MODE(1) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT1 */ + {OFFSET(gpmc_ad2), (MODE(1) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT2 */ + {OFFSET(gpmc_ad3), (MODE(1) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT3 */ + {OFFSET(gpmc_ad4), (MODE(1) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT3 */ + {OFFSET(gpmc_ad5), (MODE(1) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT3 */ + {OFFSET(gpmc_ad6), (MODE(1) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT3 */ + {OFFSET(gpmc_ad7), (MODE(1) | PULLUDEN | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT3 */ + {-1}, +}; + +static struct module_pin_mux gpio_netbird_pin_mux[] = { + /* Bank 0 */ + {OFFSET(ecap0_in_pwm0_out), (MODE(7) | PULLUDDIS | RXACTIVE)}, /* (C18) eCAP0_in_PWM0_out.gpio0[7] */ /* PWM */ + {OFFSET(mii1_txd3), (MODE(7) | PULLUDDIS)}, /* (J18) gmii1_txd3.gpio0[16] */ /* RST_PHY~ */ + {OFFSET(gpmc_ad11), (MODE(7) | PULLUDDIS)}, /* (U12) gpmc_ad11.gpio0[27] */ /* RST_EXT~ */ + /* Bank 1 */ + {OFFSET(gpmc_ad13), (MODE(7) | PULLUDEN | PULLUP_EN | RXACTIVE)}, /* (R12) gpmc_ad13.gpio1[13] */ /* BUTTON */ + {OFFSET(gpmc_ad14), (MODE(7) | PULLUDDIS)}, /* (V13) gpmc_ad14.gpio1[14] */ /* LED_A */ + {OFFSET(gpmc_ad15), (MODE(7) | PULLUDDIS)}, /* (U13) gpmc_ad15.gpio1[15] */ /* LED_B */ + {OFFSET(gpmc_a6), (MODE(7) | PULLUDDIS)}, /* (U15) gpmc_a6.gpio1[22] */ /* GSM_PWR_EN */ + {OFFSET(gpmc_a8), (MODE(7) | PULLUDDIS)}, /* (V16) gpmc_a8.gpio1[24] */ /* RST_GSM~ */ + /* Bank 2 */ + {OFFSET(lcd_pclk), (MODE(7) | PULLUDDIS)}, /* (V5) lcd_pclk.gpio2[24] */ /* EN_GPS_ANT */ + /* Bank 3 */ + {OFFSET(mii1_rxdv), (MODE(7) | PULLUDDIS)}, /* (J17) gmii1_rxdv.gpio3[4] */ /* BT_EN */ + {OFFSET(mii1_rxdv), (MODE(7) | PULLUDEN | PULLUP_EN | RXACTIVE)}, /* (K18) gmii1_txclk.gpio3[9] */ /* WLAN_IRQ */ + {OFFSET(mii1_rxdv), (MODE(7) | PULLUDDIS)}, /* (L18) gmii1_rxclk.gpio3[10] */ /* WLAN_EN */ + {-1}, +}; + +static struct module_pin_mux usb_netbird_pin_mux[] = { + {OFFSET(usb0_drvvbus), (MODE(0) | PULLUDEN | PULLDOWN_EN)}, /* (F16) USB0_DRVVBUS.USB0_DRVVBUS */ /* PWM */ + {OFFSET(usb1_drvvbus), (MODE(0) | PULLUDDIS | PULLDOWN_EN)}, /* (F15) USB1_DRVVBUS.USB1_DRVVBUS */ /* RST_PHY~ */ {-1}, }; @@ -317,12 +361,20 @@ void enable_norboot_pin_mux(void) void enable_uart0_pin_mux(void) { - configure_module_pin_mux(uart0_pin_mux); + if (board_is_nbhw16()) { + configure_module_pin_mux(uart0_netbird_pin_mux); + } else { + configure_module_pin_mux(uart0_pin_mux); + } } void enable_uart1_pin_mux(void) { - configure_module_pin_mux(uart1_pin_mux); + if (board_is_nbhw16()) { + configure_module_pin_mux(uart1_netbird_pin_mux); + } else { + configure_module_pin_mux(uart1_pin_mux); + } } void enable_uart2_pin_mux(void) @@ -438,10 +490,12 @@ void enable_board_pin_mux(void) #endif } else if (board_is_nbhw16()) { /* Netbird board */ - configure_module_pin_mux(rmii0_pin_mux_netbird); - configure_module_pin_mux(rmii1_pin_mux_netbird); - configure_module_pin_mux(mmc0_sdio_pin_mux_netbird); - configure_module_pin_mux(mmc1_emmc_pin_mux_netbird); + configure_module_pin_mux(gpio_netbird_pin_mux); + configure_module_pin_mux(rmii0_netbird_pin_mux); + configure_module_pin_mux(rmii1_netbird_pin_mux); + configure_module_pin_mux(mmc0_sdio_netbird_pin_mux); + configure_module_pin_mux(mmc1_emmc_netbird_pin_mux); + configure_module_pin_mux(usb_netbird_pin_mux); } else if (board_is_icev2()) { configure_module_pin_mux(mmc0_pin_mux); configure_module_pin_mux(gpio0_18_pin_mux);