Changeset d783145 in mainline


Ignore:
Timestamp:
2013-10-20T21:51:39Z (10 years ago)
Author:
Jakub Klama <jakub.klama@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
817d939
Parents:
13c94f7
Message:

Finally plug in IRQMP and UART kernel drivers.

Files:
6 edited

Legend:

Unmodified
Added
Removed
  • HelenOS.config

    r13c94f7 rd783145  
    530530
    531531% Serial line input module
    532 ! [CONFIG_DSRLNIN=y|(PLATFORM=arm32&MACHINE=gta02)|(PLATFORM=arm32&MACHINE=integratorcp&CONFIG_ARM926_UART=y)|(PLATFORM=arm32&MACHINE=beaglebone&CONFIG_OMAP_UART=y)|(PLATFORM=arm32&MACHINE=beagleboardxm&CONFIG_OMAP_UART=y)|(PLATFORM=ia64&MACHINE=i460GX&CONFIG_NS16550=y)|(PLATFORM=ia64&MACHINE=ski)|(PLATFORM=sparc64&PROCESSOR=sun4v)] CONFIG_SRLN (y)
     532! [CONFIG_DSRLNIN=y|(PLATFORM=sparc32)|(PLATFORM=arm32&MACHINE=gta02)|(PLATFORM=arm32&MACHINE=integratorcp&CONFIG_ARM926_UART=y)|(PLATFORM=arm32&MACHINE=beaglebone&CONFIG_OMAP_UART=y)|(PLATFORM=arm32&MACHINE=beagleboardxm&CONFIG_OMAP_UART=y)|(PLATFORM=ia64&MACHINE=i460GX&CONFIG_NS16550=y)|(PLATFORM=ia64&MACHINE=ski)|(PLATFORM=sparc64&PROCESSOR=sun4v)] CONFIG_SRLN (y)
    533533
    534534% EGA support
  • kernel/arch/sparc32/src/machine/leon3/leon3.c

    r13c94f7 rd783145  
    4343#include <genarch/drivers/grlib_uart/grlib_uart.h>
    4444#include <genarch/drivers/grlib_irqmp/grlib_irqmp.h>
     45#include <genarch/srln/srln.h>
    4546
    4647#include <func.h>
     
    130131static void leon3_output_init(void)
    131132{
     133        printf("leon3_output_init\n");
     134        printf("machine.bootinfo=%p, machine.bootinfo->uart_base=0x%08x\n", machine.bootinfo, machine.bootinfo->uart_base);
     135
    132136        machine.scons_dev = grlib_uart_init(machine.bootinfo->uart_base, machine.bootinfo->uart_irq);
    133137
     
    138142static void leon3_input_init(void)
    139143{
     144        grlib_uart_t *scons_inst;
     145
    140146        if (machine.scons_dev) {
     147                /* Create input device. */
     148                scons_inst = (void *)machine.scons_dev->data;
    141149
     150                srln_instance_t *srln_instance = srln_init();
     151                if (srln_instance) {
     152                        indev_t *sink = stdin_wire();
     153                        indev_t *srln = srln_wire(srln_instance, sink);
     154                        grlib_uart_input_wire(scons_inst, srln);
     155
     156                        /* Enable interrupts from UART */
     157                        grlib_irqmp_unmask(&machine.irqmp, machine.bootinfo->uart_irq);
     158                }
    142159        }
    143160}
  • kernel/arch/sparc32/src/start.S

    r13c94f7 rd783145  
    4747
    4848        or      %g1, 0x20, %g1
     49        or      %g1, 0xf00, %g1         ! PIL
    4950        wr      %g1, %psr
    5051
  • kernel/genarch/Makefile.inc

    r13c94f7 rd783145  
    112112ifeq ($(CONFIG_GRLIB_UART),y)
    113113        GENARCH_SOURCES += \
    114                 genarch/src/drivers/omap/uart.c
     114                genarch/src/drivers/grlib_uart/grlib_uart.c
     115endif
     116
     117ifeq ($(CONFIG_GRLIB_IRQMP),y)
     118        GENARCH_SOURCES += \
     119                genarch/src/drivers/grlib_irqmp/grlib_irqmp.c
    115120endif
    116121
  • kernel/genarch/src/drivers/grlib_irqmp/grlib_irqmp.c

    r13c94f7 rd783145  
    4545            PAGE_NOT_CACHEABLE);
    4646
     47        printf("irqmp regs: %p\n", irqc->regs);
     48
    4749        /* Mask all interrupts */
    48         pio_write_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET, 0);
     50        pio_write_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET, 0);
    4951}
    5052
     
    6466void grlib_irqmp_clear(grlib_irqmp_t *irqc, int inum)
    6567{
     68        inum++;
    6669        pio_write_32(&irqc->regs->clear, (1 << inum));
    6770}
     
    6972void grlib_irqmp_mask(grlib_irqmp_t *irqc, int src)
    7073{
    71         uint32_t mask = pio_read_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET);
     74        uint32_t mask = pio_read_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET);
    7275
     76        src++;
    7377        mask &= ~(1 << src);
    7478
    75         pio_write_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);
     79        pio_write_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);
    7680}
    7781
    7882void grlib_irqmp_unmask(grlib_irqmp_t *irqc, int src)
    7983{
    80         uint32_t mask = pio_read_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET);
     84        uint32_t mask = pio_read_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET);
    8185
     86        src++;
    8287        mask |= (1 << src);
    8388
    84         pio_write_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);
     89        pio_write_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);
    8590}
    8691
  • kernel/genarch/src/drivers/grlib_uart/grlib_uart.c

    r13c94f7 rd783145  
    109109outdev_t *grlib_uart_init(uintptr_t paddr, inr_t inr)
    110110{
     111        printf("grlib_uart_init: paddr=0x%08x\n", paddr);
     112
    111113        outdev_t *uart_dev = malloc(sizeof(outdev_t), FRAME_ATOMIC);
    112114        if (!uart_dev)
Note: See TracChangeset for help on using the changeset viewer.