/* SPDX-License-Identifier: GPL-2.0-only */

#include <device/mmio.h>
#include <bootblock_common.h>
#include <console/uart.h>
#include <soc/ti/am335x/clock.h>
#include <soc/ti/am335x/gpio.h>
#include <soc/ti/am335x/pinmux.h>

#include "leds.h"

void bootblock_mainboard_init(void)
{
	write32(&am335x_cm_wkup->wkup_gpio0, CM_ST_SW_WKUP | CM_FCLK_EN);
	write32(&am335x_cm_per->gpio1, CM_ST_SW_WKUP | CM_FCLK_EN);
	write32(&am335x_cm_per->gpio2, CM_ST_SW_WKUP | CM_FCLK_EN);
	write32(&am335x_cm_per->gpio3, CM_ST_SW_WKUP | CM_FCLK_EN);

	am335x_disable_gpio_irqs();

	beaglebone_leds_init();
	beaglebone_leds_set(BEAGLEBONE_LED_USR0, 1);
	beaglebone_leds_set(BEAGLEBONE_LED_USR1, 0);
	beaglebone_leds_set(BEAGLEBONE_LED_USR2, 1);
	beaglebone_leds_set(BEAGLEBONE_LED_USR3, 0);

	/* Set up the UART we're going to use */
	if (CONFIG_UART_FOR_CONSOLE == 0) {
		am335x_pinmux_uart0();
		write32(&am335x_cm_wkup->wkup_uart0, CM_ST_SW_WKUP);
	} else if (CONFIG_UART_FOR_CONSOLE == 1) {
		am335x_pinmux_uart1();
		write32(&am335x_cm_per->uart1, CM_ST_SW_WKUP);
	} else if (CONFIG_UART_FOR_CONSOLE == 2) {
		am335x_pinmux_uart2();
		write32(&am335x_cm_per->uart2, CM_ST_SW_WKUP);
	} else if (CONFIG_UART_FOR_CONSOLE == 3) {
		am335x_pinmux_uart3();
		write32(&am335x_cm_per->uart3, CM_ST_SW_WKUP);
	} else if (CONFIG_UART_FOR_CONSOLE == 4) {
		am335x_pinmux_uart4();
		write32(&am335x_cm_per->uart4, CM_ST_SW_WKUP);
	} else if (CONFIG_UART_FOR_CONSOLE == 5) {
		am335x_pinmux_uart5();
		write32(&am335x_cm_per->uart5, CM_ST_SW_WKUP);
	}

	/* Start monotonic timer */
	//rtc_start();
}
