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

#include <amdblocks/acpimmio.h>
#include <bootblock_common.h>
#include <superio/nuvoton/common/nuvoton.h>
#include <superio/nuvoton/nct5104d/nct5104d.h>

#define SERIAL_DEV PNP_DEV(0x4E, NCT5104D_SP4)

void bootblock_mainboard_early_init(void)
{
	u32 reg32;

	/* Set auxiliary output clock frequency on OSCOUT1 pin to be 25MHz */
	/* Set auxiliary output clock frequency on OSCOUT2 pin to be 48MHz */
	reg32 = misc_read32(0x28);
	reg32 &= 0xffc0ffff; // Clr bits [21:19] & [18:16]
	reg32 |= 0x00010000; // Set bit 16 for 25MHz
	misc_write32(0x28, reg32);

	/* Enable Auxiliary OSCOUT1/OSCOUT2 */
	reg32 = misc_read32(0x40);
	reg32 &= 0xffffff7b; // clear 2, 7
	misc_write32(0x40, reg32);

	nct5104d_enable_uartd(SERIAL_DEV);
	nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
}