Ignore:
Timestamp:
2006-10-13T20:42:54Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7dcf22a
Parents:
8ce8499
Message:

Prototypical implementation of new IRQ redirector in sparc64.
The new code can support shared IRQs in kernel (and multiple IRQs per device).
Userspace support is yet to be written.
The only architecture that uses this code is actually sparc64 only.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/src/drivers/kbd.c

    r8ce8499 r0d107f31  
    4141#include <genarch/kbd/ns16550.h>
    4242#endif
    43 
     43#include <irq.h>
    4444#include <arch/mm/page.h>
    4545#include <arch/types.h>
     
    5252
    5353kbd_type_t kbd_type = KBD_UNKNOWN;
     54
     55static irq_t kbd_irq;
    5456
    5557/** Initialize keyboard.
     
    102104        int inr;
    103105       
     106        irq_initialize(&kbd_irq);
     107       
    104108        switch (kbd_type) {
    105109        case KBD_Z8530:
     
    112116                        printf("Failed to determine keyboard interrupt.\n");
    113117                        return;
     118                } else {
     119                        kbd_irq.inr = inr;
     120                        kbd_irq.devno = 0;                      /* FIXME: assign unique devno */
     121                        kbd_irq.trigger = IRQ_TRIGGER_LEVEL;
     122                        kbd_irq.claim = z8530_claim;
     123                        kbd_irq.handler = z8530_irq_handler;
     124                        irq_register(&kbd_irq);
    114125                }
    115126                break;
     127               
    116128        case KBD_NS16550:
    117129                size = ((ofw_ebus_reg_t *) prop->value)->size;
     
    123135                        printf("Failed to determine keyboard interrupt.\n");
    124136                        return;
     137                } else {
     138                        kbd_irq.inr = inr;
     139                        kbd_irq.devno = 0;                      /* FIXME: assign unique devno */
     140                        kbd_irq.trigger = IRQ_TRIGGER_LEVEL;
     141                        kbd_irq.claim = ns16550_claim;
     142                        kbd_irq.handler = ns16550_irq_handler;
     143                        irq_register(&kbd_irq);
    125144                }
    126145                break;
     146
    127147        default:
    128148                panic("Unexpected type.\n");
Note: See TracChangeset for help on using the changeset viewer.