1/*
2 * Copyright 2017, Data61
3 * Commonwealth Scientific and Industrial Research Organisation (CSIRO)
4 * ABN 41 687 119 230.
5 *
6 * This software may be distributed and modified according to the terms of
7 * the BSD 2-Clause license. Note that NO WARRANTY is provided.
8 * See "LICENSE_BSD2.txt" for details.
9 *
10 * @TAG(DATA61_BSD)
11 */
12
13#pragma once
14
15#define SERIAL_CONSOLE_COM1_PORT  0x3f8
16#define SERIAL_CONSOLE_COM2_PORT  0x2f8
17#define SERIAL_CONSOLE_COM3_PORT  0x3e8
18#define SERIAL_CONSOLE_COM4_PORT  0x2e8
19
20#define SERIAL_CONSOLE_COM1_PORT_END (SERIAL_CONSOLE_COM1_PORT + 7)
21#define SERIAL_CONSOLE_COM2_PORT_END (SERIAL_CONSOLE_COM2_PORT + 7)
22#define SERIAL_CONSOLE_COM3_PORT_END (SERIAL_CONSOLE_COM3_PORT + 7)
23#define SERIAL_CONSOLE_COM4_PORT_END (SERIAL_CONSOLE_COM4_PORT + 7)
24
25#define SERIAL_CONSOLE_COM1_IRQ   4
26#define SERIAL_CONSOLE_COM2_IRQ   3
27#define SERIAL_CONSOLE_COM3_IRQ   4
28#define SERIAL_CONSOLE_COM4_IRQ   3
29
30#define EGA_TEXT_FB_BASE          0xB8000
31
32enum chardev_id {
33    PC99_SERIAL_COM1,
34    PC99_SERIAL_COM2,
35    PC99_SERIAL_COM3,
36    PC99_SERIAL_COM4,
37    PC99_TEXT_EGA,
38    PC99_KEYBOARD_PS2,
39    /* Aliases */
40    PS_SERIAL0 = PC99_SERIAL_COM1,
41    PS_SERIAL1 = PC99_SERIAL_COM2,
42    PS_SERIAL2 = PC99_SERIAL_COM3,
43    PS_SERIAL3 = PC99_SERIAL_COM4,
44    /* defaults */
45#if defined(CONFIG_LIB_PLAT_SUPPORT_SERIAL_PORT_X86_COM1)
46    PS_SERIAL_DEFAULT = PC99_SERIAL_COM1
47#elif defined(CONFIG_LIB_PLAT_SUPPORT_SERIAL_PORT_X86_COM2)
48    PS_SERIAL_DEFAULT = PC99_SERIAL_COM2
49#elif defined(CONFIG_LIB_PLAT_SUPPORT_SERIAL_PORT_X86_COM3)
50    PS_SERIAL_DEFAULT = PC99_SERIAL_COM3
51#elif defined(CONFIG_LIB_PLAT_SUPPORT_SERIAL_PORT_X86_COM4)
52    PS_SERIAL_DEFAULT = PC99_SERIAL_COM4
53#elif defined(CONFIG_LIB_PLAT_SUPPORT_SERIAL_TEXT_EGA)
54    PS_SERIAL_DEFAULT = PC99_TEXT_EGA
55#else
56    PS_SERIAL_DEFAULT = PC99_SERIAL_COM1
57#endif
58
59};
60
61
62#if defined(CONFIG_LIB_PLAT_SUPPORT_SERIAL_PORT_X86_COM1)
63    #define DEFAULT_SERIAL_IOPORT SERIAL_CONSOLE_COM1_PORT
64    #define DEFAULT_SERIAL_INTERRUPT SERIAL_CONSOLE_COM1_IRQ
65#elif defined(CONFIG_LIB_PLAT_SUPPORT_SERIAL_PORT_X86_COM2)
66    #define DEFAULT_SERIAL_IOPORT SERIAL_CONSOLE_COM2_PORT
67    #define DEFAULT_SERIAL_INTERRUPT SERIAL_CONSOLE_COM2_IRQ
68#elif defined(CONFIG_LIB_PLAT_SUPPORT_SERIAL_PORT_X86_COM3)
69    #define DEFAULT_SERIAL_IOPORT SERIAL_CONSOLE_COM3_PORT
70    #define DEFAULT_SERIAL_INTERRUPT SERIAL_CONSOLE_COM3_IRQ
71#elif defined(CONFIG_LIB_PLAT_SUPPORT_SERIAL_PORT_X86_COM4)
72    #define DEFAULT_SERIAL_IOPORT SERIAL_CONSOLE_COM4_PORT
73    #define DEFAULT_SERIAL_INTERRUPT SERIAL_CONSOLE_COM4_IRQ
74#elif defined(CONFIG_LIB_PLAT_SUPPORT_SERIAL_TEXT_EGA)
75    /* Don't define a port for the EGA alphanumeric mode device */
76#else
77    #define DEFAULT_SERIAL_IOPORT SERIAL_CONSOLE_COM1_PORT
78    #define DEFAULT_SERIAL_INTERRUPT SERIAL_CONSOLE_COM1_IRQ
79#endif
80