Changes in / [2673b3b:a8ca607b] in mainline


Ignore:
Files:
2 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • HelenOS.config

    r2673b3b ra8ca607b  
    471471! [(CONFIG_HID_IN=generic|CONFIG_HID_IN=serial)&PLATFORM=ia64&MACHINE=i460GX] CONFIG_NS16550 (y/n)
    472472
    473 % Support for ARM926 on-chip UART
    474 ! [(CONFIG_HID_OUT=generic|CONFIG_HID_OUT=serial)&PLATFORM=arm32&MACHINE=integratorcp] CONFIG_ARM926_UART (y/n)
    475 
    476473% Support for Samsung S3C24XX on-chip UART
    477474! [(CONFIG_HID_OUT=generic|CONFIG_HID_OUT=serial)&PLATFORM=arm32&MACHINE=gta02] CONFIG_S3C24XX_UART (y/n)
     
    502499
    503500% Serial line input module
    504 ! [CONFIG_DSRLNIN=y|(PLATFORM=arm32&MACHINE=gta02)|(PLATFORM=arm32&MACHINE=integratorcp&CONFIG_ARM926_UART=y)|(PLATFORM=arm32&MACHINE=beagleboardxm&CONFIG_AMDM37X_UART=y)|(PLATFORM=ia64&MACHINE=i460GX&CONFIG_NS16550=y)|(PLATFORM=ia64&MACHINE=ski)|(PLATFORM=sparc64&PROCESSOR=sun4v)] CONFIG_SRLN (y)
     501! [CONFIG_DSRLNIN=y|(PLATFORM=arm32&MACHINE=gta02)|(PLATFORM=arm32&MACHINE=beagleboardxm)|(PLATFORM=ia64&MACHINE=i460GX&CONFIG_NS16550=y)|(PLATFORM=ia64&MACHINE=ski)|(PLATFORM=sparc64&PROCESSOR=sun4v)] CONFIG_SRLN (y)
    505502
    506503% EGA support
  • boot/arch/arm32/include/main.h

    r2673b3b ra8ca607b  
    6464
    6565/** GXemul testarm serial console output register */
    66 #define TESTARM_SCONS_ADDR      0x10000000
     66#define TESTARM_SCONS_ADDR      0x10000000
    6767
    6868/** IntegratorCP serial console output register */
    69 #define ICP_SCONS_ADDR          0x16000000
     69#define ICP_SCONS_ADDR          0x16000000
    7070
    7171extern void bootstrap(void);
  • kernel/arch/arm32/src/mach/integratorcp/integratorcp.c

    r2673b3b ra8ca607b  
    3838#include <console/chardev.h>
    3939#include <genarch/drivers/pl050/pl050.h>
    40 #include <genarch/drivers/arm926_uart/arm926_uart.h>
    4140#include <genarch/kbrd/kbrd.h>
    42 #include <genarch/srln/srln.h>
    4341#include <console/console.h>
    4442#include <sysinfo/sysinfo.h>
     
    5553#include <print.h>
    5654
    57 
    5855#define SDRAM_SIZE      (sdram[((*(uint32_t *)(ICP_CMCR+ICP_SDRAMCR_OFFSET) & ICP_SDRAM_MASK) >> 2)])
    59 
    60 static struct {
    61         icp_hw_map_t hw_map;
    62         irq_t timer_irq;
    63         arm926_uart_t uart;
    64 } icp;
    65 
    66 
    67 
     56static icp_hw_map_t icp_hw_map;
     57static irq_t icp_timer_irq;
    6858struct arm_machine_ops icp_machine_ops = {
    6959        icp_init,
     
    8070
    8171static bool hw_map_init_called = false;
     72static bool vga_init = false;
    8273uint32_t sdram[8] = {
    8374        16777216,       /* 16mb */
     
    9889void icp_vga_init(void)
    9990{
    100         *(uint32_t*)((char *)(icp.hw_map.cmcr)+0x14) = 0xA05F0000;
    101         *(uint32_t*)((char *)(icp.hw_map.cmcr)+0x1C) = 0x12C11000;
    102         *(uint32_t*)icp.hw_map.vga = 0x3F1F3F9C;
    103         *(uint32_t*)((char *)(icp.hw_map.vga) + 0x4) = 0x080B61DF;
    104         *(uint32_t*)((char *)(icp.hw_map.vga) + 0x8) = 0x067F3800;
    105         *(uint32_t*)((char *)(icp.hw_map.vga) + 0x10) = ICP_FB;
    106         *(uint32_t *)((char *)(icp.hw_map.vga) + 0x1C) = 0x182B;
    107         *(uint32_t*)((char *)(icp.hw_map.cmcr)+0xC) = 0x33805000;
     91        *(uint32_t*)((char *)(icp_hw_map.cmcr)+0x14) = 0xA05F0000;
     92        *(uint32_t*)((char *)(icp_hw_map.cmcr)+0x1C) = 0x12C11000;
     93        *(uint32_t*)icp_hw_map.vga = 0x3F1F3F9C;
     94        *(uint32_t*)((char *)(icp_hw_map.vga) + 0x4) = 0x080B61DF;
     95        *(uint32_t*)((char *)(icp_hw_map.vga) + 0x8) = 0x067F3800;
     96        *(uint32_t*)((char *)(icp_hw_map.vga) + 0x10) = ICP_FB;
     97        *(uint32_t *)((char *)(icp_hw_map.vga) + 0x1C) = 0x182B;
     98        *(uint32_t*)((char *)(icp_hw_map.cmcr)+0xC) = 0x33805000;
    10899       
    109100}
     
    112103static inline uint32_t icp_irqc_get_sources(void)
    113104{
    114         return *((uint32_t *) icp.hw_map.irqc);
     105        return *((uint32_t *) icp_hw_map.irqc);
    115106}
    116107
     
    122113static inline void icp_irqc_mask(uint32_t irq)
    123114{
    124         *((uint32_t *) icp.hw_map.irqc_mask) = (1 << irq);
     115        *((uint32_t *) icp_hw_map.irqc_mask) = (1 << irq);
    125116}
    126117
     
    132123static inline void icp_irqc_unmask(uint32_t irq)
    133124{
    134         *((uint32_t *) icp.hw_map.irqc_unmask) |= (1 << irq);
    135 }
    136 
    137 /** Initializes icp.hw_map. */
     125        *((uint32_t *) icp_hw_map.irqc_unmask) |= (1 << irq);
     126}
     127
     128/** Initializes icp_hw_map. */
    138129void icp_init(void)
    139130{
    140         icp.hw_map.uart = km_map(ICP_UART, PAGE_SIZE,
    141             PAGE_WRITE | PAGE_NOT_CACHEABLE);
    142         icp.hw_map.kbd_ctrl = km_map(ICP_KBD, PAGE_SIZE, PAGE_NOT_CACHEABLE);
    143         icp.hw_map.kbd_stat = icp.hw_map.kbd_ctrl + ICP_KBD_STAT;
    144         icp.hw_map.kbd_data = icp.hw_map.kbd_ctrl + ICP_KBD_DATA;
    145         icp.hw_map.kbd_intstat = icp.hw_map.kbd_ctrl + ICP_KBD_INTR_STAT;
    146         icp.hw_map.rtc = km_map(ICP_RTC, PAGE_SIZE,
    147             PAGE_WRITE | PAGE_NOT_CACHEABLE);
    148         icp.hw_map.rtc1_load = icp.hw_map.rtc + ICP_RTC1_LOAD_OFFSET;
    149         icp.hw_map.rtc1_read = icp.hw_map.rtc + ICP_RTC1_READ_OFFSET;
    150         icp.hw_map.rtc1_ctl = icp.hw_map.rtc + ICP_RTC1_CTL_OFFSET;
    151         icp.hw_map.rtc1_intrclr = icp.hw_map.rtc + ICP_RTC1_INTRCLR_OFFSET;
    152         icp.hw_map.rtc1_bgload = icp.hw_map.rtc + ICP_RTC1_BGLOAD_OFFSET;
    153         icp.hw_map.rtc1_intrstat = icp.hw_map.rtc + ICP_RTC1_INTRSTAT_OFFSET;
    154 
    155         icp.hw_map.irqc = km_map(ICP_IRQC, PAGE_SIZE,
    156             PAGE_WRITE | PAGE_NOT_CACHEABLE);
    157         icp.hw_map.irqc_mask = icp.hw_map.irqc + ICP_IRQC_MASK_OFFSET;
    158         icp.hw_map.irqc_unmask = icp.hw_map.irqc + ICP_IRQC_UNMASK_OFFSET;
    159         icp.hw_map.cmcr = km_map(ICP_CMCR, PAGE_SIZE,
    160             PAGE_WRITE | PAGE_NOT_CACHEABLE);
    161         icp.hw_map.sdramcr = icp.hw_map.cmcr + ICP_SDRAMCR_OFFSET;
    162         icp.hw_map.vga = km_map(ICP_VGA, PAGE_SIZE,
     131        icp_hw_map.uart = km_map(ICP_UART, PAGE_SIZE,
     132            PAGE_WRITE | PAGE_NOT_CACHEABLE);
     133        icp_hw_map.kbd_ctrl = km_map(ICP_KBD, PAGE_SIZE, PAGE_NOT_CACHEABLE);
     134        icp_hw_map.kbd_stat = icp_hw_map.kbd_ctrl + ICP_KBD_STAT;
     135        icp_hw_map.kbd_data = icp_hw_map.kbd_ctrl + ICP_KBD_DATA;
     136        icp_hw_map.kbd_intstat = icp_hw_map.kbd_ctrl + ICP_KBD_INTR_STAT;
     137        icp_hw_map.rtc = km_map(ICP_RTC, PAGE_SIZE,
     138            PAGE_WRITE | PAGE_NOT_CACHEABLE);
     139        icp_hw_map.rtc1_load = icp_hw_map.rtc + ICP_RTC1_LOAD_OFFSET;
     140        icp_hw_map.rtc1_read = icp_hw_map.rtc + ICP_RTC1_READ_OFFSET;
     141        icp_hw_map.rtc1_ctl = icp_hw_map.rtc + ICP_RTC1_CTL_OFFSET;
     142        icp_hw_map.rtc1_intrclr = icp_hw_map.rtc + ICP_RTC1_INTRCLR_OFFSET;
     143        icp_hw_map.rtc1_bgload = icp_hw_map.rtc + ICP_RTC1_BGLOAD_OFFSET;
     144        icp_hw_map.rtc1_intrstat = icp_hw_map.rtc + ICP_RTC1_INTRSTAT_OFFSET;
     145
     146        icp_hw_map.irqc = km_map(ICP_IRQC, PAGE_SIZE,
     147            PAGE_WRITE | PAGE_NOT_CACHEABLE);
     148        icp_hw_map.irqc_mask = icp_hw_map.irqc + ICP_IRQC_MASK_OFFSET;
     149        icp_hw_map.irqc_unmask = icp_hw_map.irqc + ICP_IRQC_UNMASK_OFFSET;
     150        icp_hw_map.cmcr = km_map(ICP_CMCR, PAGE_SIZE,
     151            PAGE_WRITE | PAGE_NOT_CACHEABLE);
     152        icp_hw_map.sdramcr = icp_hw_map.cmcr + ICP_SDRAMCR_OFFSET;
     153        icp_hw_map.vga = km_map(ICP_VGA, PAGE_SIZE,
    163154            PAGE_WRITE | PAGE_NOT_CACHEABLE);
    164155
     
    173164{
    174165        icp_irqc_mask(ICP_TIMER_IRQ);
    175         *((uint32_t*) icp.hw_map.rtc1_load) = frequency;
    176         *((uint32_t*) icp.hw_map.rtc1_bgload) = frequency;
    177         *((uint32_t*) icp.hw_map.rtc1_ctl) = ICP_RTC_CTL_VALUE;
     166        *((uint32_t*) icp_hw_map.rtc1_load) = frequency;
     167        *((uint32_t*) icp_hw_map.rtc1_bgload) = frequency;
     168        *((uint32_t*) icp_hw_map.rtc1_ctl) = ICP_RTC_CTL_VALUE;
    178169        icp_irqc_unmask(ICP_TIMER_IRQ);
    179170}
     
    181172static irq_ownership_t icp_timer_claim(irq_t *irq)
    182173{
    183         if (icp.hw_map.rtc1_intrstat) {
    184                 *((uint32_t*) icp.hw_map.rtc1_intrclr) = 1;
     174        if (icp_hw_map.rtc1_intrstat) {
     175                *((uint32_t*) icp_hw_map.rtc1_intrclr) = 1;
    185176                return IRQ_ACCEPT;
    186177        } else
     
    209200static void icp_timer_irq_init(void)
    210201{
    211         irq_initialize(&icp.timer_irq);
    212         icp.timer_irq.devno = device_assign_devno();
    213         icp.timer_irq.inr = ICP_TIMER_IRQ;
    214         icp.timer_irq.claim = icp_timer_claim;
    215         icp.timer_irq.handler = icp_timer_irq_handler;
    216 
    217         irq_register(&icp.timer_irq);
     202        irq_initialize(&icp_timer_irq);
     203        icp_timer_irq.devno = device_assign_devno();
     204        icp_timer_irq.inr = ICP_TIMER_IRQ;
     205        icp_timer_irq.claim = icp_timer_claim;
     206        icp_timer_irq.handler = icp_timer_irq_handler;
     207
     208        irq_register(&icp_timer_irq);
    218209}
    219210
     
    240231
    241232        if (hw_map_init_called) {
    242                 *size = (sdram[((*(uint32_t *)icp.hw_map.sdramcr &
     233                *size = (sdram[((*(uint32_t *)icp_hw_map.sdramcr &
    243234                    ICP_SDRAM_MASK) >> 2)]);
    244235        } else {
     
    295286{
    296287#ifdef CONFIG_FB
    297         static bool vga_init = false;
    298288        if (!vga_init) {
    299289                icp_vga_init();
     
    314304                stdout_wire(fbdev);
    315305#endif
    316 #ifdef CONFIG_ARM926_UART
    317         if (arm926_uart_init(&icp.uart, ARM926_UART0_IRQ,
    318             ARM926_UART0_BASE_ADDRESS, sizeof(arm926_uart_regs_t)))
    319                 stdout_wire(&icp.uart.outdev);
    320 #endif
    321306}
    322307
     
    325310
    326311        pl050_t *pl050 = malloc(sizeof(pl050_t), FRAME_ATOMIC);
    327         pl050->status = (ioport8_t *)icp.hw_map.kbd_stat;
    328         pl050->data = (ioport8_t *)icp.hw_map.kbd_data;
    329         pl050->ctrl = (ioport8_t *)icp.hw_map.kbd_ctrl;
     312        pl050->status = (ioport8_t *)icp_hw_map.kbd_stat;
     313        pl050->data = (ioport8_t *)icp_hw_map.kbd_data;
     314        pl050->ctrl = (ioport8_t *)icp_hw_map.kbd_ctrl;
    330315               
    331316        pl050_instance_t *pl050_instance = pl050_init(pl050, ICP_KBD_IRQ);
     
    350335            ICP_KBD);
    351336
    352 #ifdef CONFIG_ARM926_UART
    353         srln_instance_t *srln_instance = srln_init();
    354         if (srln_instance) {
    355                 indev_t *sink = stdin_wire();
    356                 indev_t *srln = srln_wire(srln_instance, sink);
    357                 arm926_uart_input_wire(&icp.uart, srln);
    358                 icp_irqc_unmask(ARM926_UART0_IRQ);
    359         }
    360 #endif
    361337}
    362338
  • kernel/genarch/Makefile.inc

    r2673b3b ra8ca607b  
    9191endif
    9292
    93 ifeq ($(CONFIG_ARM926_UART),y)
    94         GENARCH_SOURCES += \
    95                 genarch/src/drivers/arm926_uart/arm926_uart.c
    96 endif
    97 
    9893ifeq ($(CONFIG_S3C24XX_IRQC),y)
    9994        GENARCH_SOURCES += \
Note: See TracChangeset for help on using the changeset viewer.