/*
 * Copyright (c) 2017 Jean-Paul Etienne <fractalclone@gmail.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <init.h>
#include <drivers/pinmux.h>
#include <soc.h>

static int hifive1_revb_pinmux_init(const struct device *dev)
{
	ARG_UNUSED(dev);

	const struct device *p = DEVICE_DT_GET(DT_NODELABEL(pinctrl));

	__ASSERT_NO_MSG(device_is_ready(p));

#ifdef CONFIG_UART_SIFIVE
#ifdef CONFIG_UART_SIFIVE_PORT_0
	/* UART0 RX */
	pinmux_pin_set(p, 16, SIFIVE_PINMUX_IOF0);
	/* UART0 TX */
	pinmux_pin_set(p, 17, SIFIVE_PINMUX_IOF0);
#endif /* CONFIG_UART_SIFIVE_PORT_0 */
#endif /* CONFIG_UART_SIFIVE */

#ifdef CONFIG_SPI_SIFIVE
	/* SPI1 */
	pinmux_pin_set(p, 2, SIFIVE_PINMUX_IOF0); /* SS0 */
	pinmux_pin_set(p, 3, SIFIVE_PINMUX_IOF0); /* MOSI */
	pinmux_pin_set(p, 4, SIFIVE_PINMUX_IOF0); /* MISO */
	pinmux_pin_set(p, 5, SIFIVE_PINMUX_IOF0); /* SCK */
	pinmux_pin_set(p, 9, SIFIVE_PINMUX_IOF0); /* SS2 */
	pinmux_pin_set(p, 10, SIFIVE_PINMUX_IOF0); /* SS3 */
#endif /* CONFIG_SPI_SIFIVE */

#ifdef CONFIG_I2C_SIFIVE
	/* I2C 0 */
	pinmux_pin_set(p, 12, SIFIVE_PINMUX_IOF0);
	pinmux_pin_set(p, 13, SIFIVE_PINMUX_IOF0);
#endif /* CONFIG_I2C_SIFIVE */

	return 0;
}

SYS_INIT(hifive1_revb_pinmux_init, PRE_KERNEL_1, CONFIG_PINMUX_INIT_PRIORITY);
