123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /*
- * Copyright (C) 2013 Imagination Technologies
- * Author: Paul Burton <paul.burton@imgtec.com>
- *
- * Setup code for the FDC37M817 super I/O controller
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
- #include <common.h>
- #include <asm/io.h>
- #define SIO_CONF_PORT 0x3f0
- #define SIO_DATA_PORT 0x3f1
- enum sio_conf_key {
- SIOCONF_DEVNUM = 0x07,
- SIOCONF_ACTIVATE = 0x30,
- SIOCONF_ENTER_SETUP = 0x55,
- SIOCONF_BASE_HIGH = 0x60,
- SIOCONF_BASE_LOW = 0x61,
- SIOCONF_PRIMARY_INT = 0x70,
- SIOCONF_EXIT_SETUP = 0xaa,
- SIOCONF_MODE = 0xf0,
- };
- static struct {
- u8 key;
- u8 data;
- } sio_config[] = {
- /* tty0 */
- { SIOCONF_DEVNUM, 0x04 },
- { SIOCONF_BASE_HIGH, 0x03 },
- { SIOCONF_BASE_LOW, 0xf8 },
- { SIOCONF_MODE, 0x02 },
- { SIOCONF_PRIMARY_INT, 0x04 },
- { SIOCONF_ACTIVATE, 0x01 },
- /* tty1 */
- { SIOCONF_DEVNUM, 0x05 },
- { SIOCONF_BASE_HIGH, 0x02 },
- { SIOCONF_BASE_LOW, 0xf8 },
- { SIOCONF_MODE, 0x02 },
- { SIOCONF_PRIMARY_INT, 0x03 },
- { SIOCONF_ACTIVATE, 0x01 },
- };
- void malta_superio_init(void)
- {
- unsigned i;
- /* enter config state */
- outb(SIOCONF_ENTER_SETUP, SIO_CONF_PORT);
- /* configure peripherals */
- for (i = 0; i < ARRAY_SIZE(sio_config); i++) {
- outb(sio_config[i].key, SIO_CONF_PORT);
- outb(sio_config[i].data, SIO_DATA_PORT);
- }
- /* exit config state */
- outb(SIOCONF_EXIT_SETUP, SIO_CONF_PORT);
- }
|