/*
 * Copyright (c) 2018 Intel Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */
#include "x86_64-hw.h"

/* Super-primitive 8250 serial output-only driver, 115200 8n1 */

#define _PORT 0x3f8

static inline void serout(int c)
{
	while (!(ioport_in8(_PORT + 5) & 0x20)) {
	}
	ioport_out8(_PORT, c);
}

static inline void serial_putc(int c)
{
	if (c == '\n') {
		serout('\r');
	}
	serout(c);
}

static inline void serial_puts(const char *s)
{
	while (*s) {
		serial_putc(*s++);
	}
}

static inline void serial_init(void)
{
	/* In fact Qemu already has most of this set up and works by
	 * default
	 */
	ioport_out8(_PORT+1, 0);    /* IER = 0 */
	ioport_out8(_PORT+3, 0x80); /* LCR = 8n1 + DLAB select */
	ioport_out8(_PORT,   1);    /* Divisor Latch low byte */
	ioport_out8(_PORT+1, 0);    /* Divisor Latch high byte */
	ioport_out8(_PORT+3, 0x03); /* LCR = 8n1 + DLAB off */
	ioport_out8(_PORT+4, 0x03); /* MCR = DTR & RTS asserted */
}
