blob: 60250553a436f5b7a43e21e66d3021d59c75cb39 [file] [log] [blame]
Felix Held3f3eca92020-01-23 17:12:32 +01001/* SPDX-License-Identifier: GPL-2.0-or-later */
2/* This file is part of the coreboot project. */
Dave Frodinda2daef2014-06-09 12:33:24 -06003
4#include <arch/io.h>
Kyösti Mälkki3855c012019-03-03 08:45:19 +02005#include <device/pnp_type.h>
Dave Frodinda2daef2014-06-09 12:33:24 -06006#include <device/pnp.h>
7#include <stdint.h>
8#include "nct5104d.h"
9
10#define NUVOTON_ENTRY_KEY 0x87
11#define NUVOTON_EXIT_KEY 0xAA
12
13/* Enable configuration: pass entry key '0x87' into index port dev
14 * two times. */
Edward O'Callaghan85836c22014-07-09 20:26:25 +100015static void pnp_enter_conf_state(pnp_devfn_t dev)
Dave Frodinda2daef2014-06-09 12:33:24 -060016{
17 u16 port = dev >> 8;
18 outb(NUVOTON_ENTRY_KEY, port);
19 outb(NUVOTON_ENTRY_KEY, port);
20}
21
22/* Disable configuration: pass exit key '0xAA' into index port dev. */
Edward O'Callaghan85836c22014-07-09 20:26:25 +100023static void pnp_exit_conf_state(pnp_devfn_t dev)
Dave Frodinda2daef2014-06-09 12:33:24 -060024{
25 u16 port = dev >> 8;
26 outb(NUVOTON_EXIT_KEY, port);
27}
28
29/* Route UARTD to pins 41-48 */
Edward O'Callaghan85836c22014-07-09 20:26:25 +100030void nct5104d_enable_uartd(pnp_devfn_t dev)
Dave Frodinda2daef2014-06-09 12:33:24 -060031{
32 u8 tmp;
33 u16 port = dev >> 8;
34 pnp_enter_conf_state(dev);
35 outb(0x1c, port);
36 tmp = inb(port + 1);
37 tmp |= 0x04;
38 outb(tmp, port + 1);
39 pnp_exit_conf_state(dev);
40}