Changeset 3296df5 in mainline


Ignore:
Timestamp:
2012-10-28T21:34:06Z (12 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
24b06199
Parents:
b2ac3998
Message:

Add NS16550 serial input support on ia32 and amd64 platforms.

This is based on ia64 code for the same.
Currently the port used is hardcoded to be COM1.

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • HelenOS.config

    rb2ac3998 r3296df5  
    457457! [(CONFIG_HID_IN=generic|CONFIG_HID_IN=serial)&PLATFORM=ia64&MACHINE=i460GX] CONFIG_NS16550 (y/n)
    458458
     459% Support for NS16550 controller
     460! [(CONFIG_HID_IN=generic|CONFIG_HID_IN=serial)&(PLATFORM=ia32|PLATFORM=amd64)] CONFIG_NS16550 (y/n)
     461
    459462% Support for ARM926 on-chip UART
    460463! [(CONFIG_HID_OUT=generic|CONFIG_HID_OUT=serial)&PLATFORM=arm32&MACHINE=integratorcp] CONFIG_ARM926_UART (y/n)
     
    485488
    486489% Serial line input module
    487 ! [CONFIG_DSRLNIN=y|(PLATFORM=arm32&MACHINE=gta02)|(PLATFORM=arm32&MACHINE=integratorcp&CONFIG_ARM926_UART=y)|(PLATFORM=ia64&MACHINE=i460GX&CONFIG_NS16550=y)|(PLATFORM=ia64&MACHINE=ski)|(PLATFORM=sparc64&PROCESSOR=sun4v)] CONFIG_SRLN (y)
     490! [CONFIG_DSRLNIN=y|(PLATFORM=arm32&MACHINE=gta02)|(PLATFORM=arm32&MACHINE=integratorcp&CONFIG_ARM926_UART=y)|(PLATFORM=ia64&MACHINE=i460GX&CONFIG_NS16550=y)|(PLATFORM=ia64&MACHINE=ski)|(PLATFORM=sparc64&PROCESSOR=sun4v)|(PLATFORM=ia32&CONFIG_NS16550=y)|(PLATFORM=amd64&CONFIG_NS16550=y)] CONFIG_SRLN (y)
    488491
    489492% EGA support
  • kernel/arch/amd64/include/interrupt.h

    rb2ac3998 r3296df5  
    5353#define IRQ_KBD       1
    5454#define IRQ_PIC1      2
     55/* NS16550 at COM1 */
     56#define IRQ_NS16550   4
    5557#define IRQ_PIC_SPUR  7
    5658#define IRQ_MOUSE     12
  • kernel/arch/amd64/src/amd64.c

    rb2ac3998 r3296df5  
    5050#include <genarch/drivers/ega/ega.h>
    5151#include <genarch/drivers/i8042/i8042.h>
     52#include <genarch/drivers/ns16550/ns16550.h>
    5253#include <genarch/drivers/legacy/ia32/io.h>
    5354#include <genarch/fb/bfb.h>
    5455#include <genarch/kbrd/kbrd.h>
     56#include <genarch/srln/srln.h>
    5557#include <genarch/multiboot/multiboot.h>
    5658#include <genarch/multiboot/multiboot2.h>
     
    215217        }
    216218#endif
     219
     220#ifdef CONFIG_NS16550
     221        /*
     222         * Initialize the ns16550 controller. Then initialize the serial
     223         * input module and connect it to ns16550.
     224         */
     225        ns16550_instance_t *ns16550_instance
     226            = ns16550_init((ns16550_t *) NS16550_BASE, IRQ_NS16550, NULL, NULL);
     227        if (ns16550_instance) {
     228                srln_instance_t *srln_instance = srln_init();
     229                if (srln_instance) {
     230                        indev_t *sink = stdin_wire();
     231                        indev_t *srln = srln_wire(srln_instance, sink);
     232                        ns16550_wire(ns16550_instance, srln);
     233                }
     234        }
     235#endif
    217236       
    218237        if (irqs_info != NULL)
  • kernel/arch/ia32/include/interrupt.h

    rb2ac3998 r3296df5  
    5353#define IRQ_KBD       1
    5454#define IRQ_PIC1      2
     55/* NS16550 at COM1 */
     56#define IRQ_NS16550   4
    5557#define IRQ_PIC_SPUR  7
    5658#define IRQ_MOUSE     12
  • kernel/arch/ia32/src/ia32.c

    rb2ac3998 r3296df5  
    5151#include <genarch/drivers/ega/ega.h>
    5252#include <genarch/drivers/i8042/i8042.h>
     53#include <genarch/drivers/ns16550/ns16550.h>
    5354#include <genarch/drivers/legacy/ia32/io.h>
    5455#include <genarch/fb/bfb.h>
    5556#include <genarch/kbrd/kbrd.h>
     57#include <genarch/srln/srln.h>
    5658#include <genarch/multiboot/multiboot.h>
    5759#include <genarch/multiboot/multiboot2.h>
     
    169171        }
    170172#endif
     173
     174#ifdef CONFIG_NS16550
     175        /*
     176         * Initialize the ns16550 controller. Then initialize the serial
     177         * input module and connect it to ns16550.
     178         */
     179        ns16550_instance_t *ns16550_instance
     180            = ns16550_init((ns16550_t *) NS16550_BASE, IRQ_NS16550, NULL, NULL);
     181        if (ns16550_instance) {
     182                srln_instance_t *srln_instance = srln_init();
     183                if (srln_instance) {
     184                        indev_t *sink = stdin_wire();
     185                        indev_t *srln = srln_wire(srln_instance, sink);
     186                        ns16550_wire(ns16550_instance, srln);
     187                }
     188        }
     189#endif
    171190       
    172191        if (irqs_info != NULL)
Note: See TracChangeset for help on using the changeset viewer.