Changeset 743ffa6e in mainline


Ignore:
Timestamp:
2007-09-09T21:07:23Z (17 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0e9463df
Parents:
857c0e7
Message:

IA64 simics keyboard support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/src/ia64.c

    r857c0e7 r743ffa6e  
    5151#include <syscall/syscall.h>
    5252#include <ddi/irq.h>
     53#include <ddi/device.h>
    5354#include <arch/drivers/ega.h>
     55#include <arch/bootinfo.h>
     56#include <genarch/kbd/i8042.h>
     57
     58bootinfo_t *bootinfo;
    5459
    5560void arch_pre_main(void)
    5661{
    5762        /* Setup usermode init tasks. */
     63
     64#ifdef I460GX
     65        int i;
     66        init.cnt = bootinfo->taskmap.count;
     67        for(i=0;i<init.cnt;i++)
     68        {
     69            init.tasks[i].addr = ((unsigned long)bootinfo->taskmap.tasks[i].addr)|VRN_MASK;
     70            init.tasks[i].size = bootinfo->taskmap.tasks[i].size;
     71        }
     72#else   
    5873        init.cnt = 8;
    5974        init.tasks[0].addr = INIT0_ADDRESS;
     
    7388        init.tasks[7].addr = INIT0_ADDRESS + 0x1c00000;
    7489        init.tasks[7].size = INIT0_SIZE;
     90#endif
    7591}
    7692
     
    101117{
    102118}
     119
     120
     121#ifdef I460GX
     122#define POLL_INTERVAL           50000           /* 50 ms */
     123/** Kernel thread for polling keyboard. */
     124static void i8042_kkbdpoll(void *arg)
     125{
     126        while (1) {
     127                i8042_poll();
     128                thread_usleep(POLL_INTERVAL);
     129        }
     130}
     131#endif
    103132
    104133void arch_post_smp_init(void)
     
    116145                thread_ready(t);
    117146#endif         
     147
     148#ifdef I460GX
     149                devno_t kbd = device_assign_devno();
     150                devno_t mouse = device_assign_devno();
     151                /* keyboard controller */
     152                i8042_init(kbd, IRQ_KBD, mouse, IRQ_MOUSE);
     153
     154                thread_t *t;
     155                t = thread_create(i8042_kkbdpoll, NULL, TASK, 0, "kkbdpoll", true);
     156                if (!t)
     157                        panic("cannot create kkbdpoll\n");
     158                thread_ready(t);
     159
     160#endif
     161
    118162        }
    119163}
Note: See TracChangeset for help on using the changeset viewer.