Changeset 2a77841d in mainline for kernel/arch/ppc32/src/ppc32.c


Ignore:
Timestamp:
2009-07-02T19:39:29Z (15 years ago)
Author:
Jiri Svoboda <jirik.svoboda@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d68e4d5
Parents:
bb8dc88
Message:

Kernel Mac ADB keyboard driver revived.

File:
1 edited

Legend:

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

    rbb8dc88 r2a77841d  
    3737#include <arch/boot/boot.h>
    3838#include <genarch/drivers/via-cuda/cuda.h>
     39#include <genarch/kbrd/kbrd.h>
    3940#include <arch/interrupt.h>
    4041#include <genarch/fb/fb.h>
     
    118119                irq_init(IRQ_COUNT, IRQ_COUNT);
    119120               
    120                 if (bootinfo.macio.addr) {
    121                         /* Initialize PIC */
    122                         cir_t cir;
    123                         void *cir_arg;
    124                         pic_init(bootinfo.macio.addr, PAGE_SIZE, &cir, &cir_arg);
    125                        
    126 #ifdef CONFIG_VIA_CUDA
    127                         uintptr_t pa = bootinfo.macio.addr + 0x16000;
    128                         uintptr_t aligned_addr = ALIGN_DOWN(pa, PAGE_SIZE);
    129                         size_t offset = pa - aligned_addr;
    130                         size_t size = 2 * PAGE_SIZE;
    131                        
    132                         cuda_t *cuda = (cuda_t *)
    133                             (hw_map(aligned_addr, offset + size) + offset);
    134                        
    135                         /* Initialize I/O controller */
    136                         cuda_instance_t *cuda_instance =
    137                             cuda_init(cuda, IRQ_CUDA, cir, cir_arg);
    138                         if (cuda_instance) {
    139                                 indev_t *sink = stdin_wire();
    140                                 cuda_wire(cuda_instance, sink);
    141                         }
    142 #endif
    143                 }
    144                
    145121                /* Merge all zones to 1 big zone */
    146122                zone_merge_all();
     
    158134void arch_post_smp_init(void)
    159135{
     136        if (bootinfo.macio.addr) {
     137                /* Initialize PIC */
     138                cir_t cir;
     139                void *cir_arg;
     140                pic_init(bootinfo.macio.addr, PAGE_SIZE, &cir, &cir_arg);
     141
     142#ifdef CONFIG_MAC_KBD
     143                uintptr_t pa = bootinfo.macio.addr + 0x16000;
     144                uintptr_t aligned_addr = ALIGN_DOWN(pa, PAGE_SIZE);
     145                size_t offset = pa - aligned_addr;
     146                size_t size = 2 * PAGE_SIZE;
     147                       
     148                cuda_t *cuda = (cuda_t *)
     149                    (hw_map(aligned_addr, offset + size) + offset);
     150                       
     151                /* Initialize I/O controller */
     152                cuda_instance_t *cuda_instance =
     153                    cuda_init(cuda, IRQ_CUDA, cir, cir_arg);
     154                if (cuda_instance) {
     155                        kbrd_instance_t *kbrd_instance = kbrd_init();
     156                        if (kbrd_instance) {
     157                                indev_t *sink = stdin_wire();
     158                                indev_t *kbrd = kbrd_wire(kbrd_instance, sink);
     159                                cuda_wire(cuda_instance, kbrd);
     160                                pic_enable_interrupt(IRQ_CUDA);
     161                        }
     162                }
     163#endif
     164        }
    160165}
    161166
Note: See TracChangeset for help on using the changeset viewer.