Changeset f817d3a in mainline for kernel/arch/ppc32/src/drivers


Ignore:
Timestamp:
2009-01-29T17:24:35Z (17 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
43d6401
Parents:
26c67a8
Message:

use macio optionally

Location:
kernel/arch/ppc32/src/drivers
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ppc32/src/drivers/cuda.c

    r26c67a8 rf817d3a  
    237237int cuda_get_scancode(void)
    238238{
    239         uint8_t kind;
    240         uint8_t data[4];
    241        
    242         receive_packet(&kind, 4, data);
    243        
    244         if ((kind == PACKET_ADB) && (data[0] == 0x40) && (data[1] == 0x2c))
    245                 return data[2];
     239        if (cuda) {
     240                uint8_t kind;
     241                uint8_t data[4];
     242               
     243                receive_packet(&kind, 4, data);
     244               
     245                if ((kind == PACKET_ADB) && (data[0] == 0x40) && (data[1] == 0x2c))
     246                        return data[2];
     247        }
    246248       
    247249        return -1;
     
    272274void cuda_grab(void)
    273275{
    274         ipl_t ipl = interrupts_disable();
    275         spinlock_lock(&cuda_irq.lock);
    276         cuda_irq.notif_cfg.notify = false;
    277         spinlock_unlock(&cuda_irq.lock);
    278         interrupts_restore(ipl);
     276        if (cuda) {
     277                ipl_t ipl = interrupts_disable();
     278                spinlock_lock(&cuda_irq.lock);
     279                cuda_irq.notif_cfg.notify = false;
     280                spinlock_unlock(&cuda_irq.lock);
     281                interrupts_restore(ipl);
     282        }
    279283}
    280284
     
    283287void cuda_release(void)
    284288{
    285         ipl_t ipl = interrupts_disable();
    286         spinlock_lock(&cuda_irq.lock);
    287         if (cuda_irq.notif_cfg.answerbox)
    288                 cuda_irq.notif_cfg.notify = true;
    289         spinlock_unlock(&cuda_irq.unlock);
    290         interrupts_restore(ipl);
     289        if (cuda) {
     290                ipl_t ipl = interrupts_disable();
     291                spinlock_lock(&cuda_irq.lock);
     292                if (cuda_irq.notif_cfg.answerbox)
     293                        cuda_irq.notif_cfg.notify = true;
     294                spinlock_unlock(&cuda_irq.unlock);
     295                interrupts_restore(ipl);
     296        }
    291297}
    292298
     
    294300void cuda_init(devno_t devno, uintptr_t base, size_t size)
    295301{
    296         cuda = (uint8_t *) hw_map(base, size); 
     302        cuda = (uint8_t *) hw_map(base, size);
    297303       
    298304        chardev_initialize("cuda_kbd", &kbrd, &ops);
     
    307313       
    308314        pic_enable_interrupt(CUDA_IRQ);
    309 
     315       
    310316        sysinfo_set_item_val("kbd", NULL, true);
    311317        sysinfo_set_item_val("kbd.devno", NULL, devno);
     
    346352
    347353void arch_reboot(void) {
    348         send_packet(PACKET_CUDA, 1, CUDA_RESET);
     354        if (cuda)
     355                send_packet(PACKET_CUDA, 1, CUDA_RESET);
     356       
    349357        asm volatile (
    350358                "b 0\n"
  • kernel/arch/ppc32/src/drivers/pic.c

    r26c67a8 rf817d3a  
    3939#include <bitops.h>
    4040
    41 static volatile uint32_t *pic;
     41static volatile uint32_t *pic = NULL;
    4242
    4343void pic_init(uintptr_t base, size_t size)
     
    4848void pic_enable_interrupt(int intnum)
    4949{
    50         if (intnum < 32) {
    51                 pic[PIC_MASK_LOW] = pic[PIC_MASK_LOW] | (1 << intnum);
    52         } else {
    53                 pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] | (1 << (intnum - 32));
     50        if (pic) {
     51                if (intnum < 32)
     52                        pic[PIC_MASK_LOW] = pic[PIC_MASK_LOW] | (1 << intnum);
     53                else
     54                        pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] | (1 << (intnum - 32));
    5455        }
    5556       
     
    5859void pic_disable_interrupt(int intnum)
    5960{
    60         if (intnum < 32) {
    61                 pic[PIC_MASK_LOW] = pic[PIC_MASK_LOW] & (~(1 << intnum));
    62         } else {
    63                 pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] & (~(1 << (intnum - 32)));
     61        if (pic) {
     62                if (intnum < 32)
     63                        pic[PIC_MASK_LOW] = pic[PIC_MASK_LOW] & (~(1 << intnum));
     64                else
     65                        pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] & (~(1 << (intnum - 32)));
    6466        }
    6567}
     
    6769void pic_ack_interrupt(int intnum)
    6870{
    69         if (intnum < 32)
    70                 pic[PIC_ACK_LOW] = 1 << intnum;
    71         else
    72                 pic[PIC_ACK_HIGH] = 1 << (intnum - 32);
     71        if (pic) {
     72                if (intnum < 32)
     73                        pic[PIC_ACK_LOW] = 1 << intnum;
     74                else
     75                        pic[PIC_ACK_HIGH] = 1 << (intnum - 32);
     76        }
    7377}
    7478
     
    7680int pic_get_pending(void)
    7781{
    78         int pending;
    79 
    80         pending = pic[PIC_PENDING_LOW];
    81         if (pending)
    82                 return fnzb32(pending);
    83        
    84         pending = pic[PIC_PENDING_HIGH];
    85         if (pending)
    86                 return fnzb32(pending) + 32;
     82        if (pic) {
     83                int pending;
     84               
     85                pending = pic[PIC_PENDING_LOW];
     86                if (pending)
     87                        return fnzb32(pending);
     88               
     89                pending = pic[PIC_PENDING_HIGH];
     90                if (pending)
     91                        return fnzb32(pending) + 32;
     92        }
    8793       
    8894        return -1;
Note: See TracChangeset for help on using the changeset viewer.