Changeset ae971b3e in mainline


Ignore:
Timestamp:
2006-06-06T23:26:46Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d667767
Parents:
9ceaef4
Message:

fixes

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • arch/ppc32/include/drivers/cuda.h

    r9ceaef4 rae971b3e  
    3131
    3232#include <arch/types.h>
    33 #include <console/chardev.h>
    3433#include <typedefs.h>
    3534
    3635#define CUDA_IRQ 10
    3736
    38 chardev_t kbrd;
    39 
    4037extern void cuda_init(__address base, size_t size);
     38extern __u8 cuda_get_scancode(void);
    4139
    4240#endif
  • arch/ppc32/src/drivers/cuda.c

    r9ceaef4 rae971b3e  
    3030#include <arch/asm.h>
    3131#include <console/console.h>
     32#include <console/chardev.h>
    3233#include <arch/drivers/pic.h>
    3334#include <sysinfo/sysinfo.h>
     
    3738#define PACKET_ADB  0x00
    3839#define PACKET_CUDA 0x01
    39 #define PACKET_NULL 0xff
    4040
    4141#define CUDA_POWERDOWN 0x0a
     
    6767
    6868
    69 static void send_packet(const __u8 kind, index_t count, ...)
    70 {
    71         index_t i;
    72         va_list va;
    73        
    74         switch (kind) {
    75                 case PACKET_NULL:
    76                         break;
    77                 default:
    78                         cuda[B] = cuda[B] | TIP;
    79                         cuda[ACR] = cuda[ACR] | SR_OUT;
    80                         cuda[SR] = kind;
    81                         cuda[B] = cuda[B] & ~TIP;
    82                        
    83                         va_start(va, count);
    84                        
    85                         for (i = 0; i < count; i++) {
    86                                 cuda[ACR] = cuda[ACR] | SR_OUT;
    87                                 cuda[SR] = va_arg(va, int);
    88                                 cuda[B] = cuda[B] | TACK;
    89                         }
    90                        
    91                         va_end(va);
    92                        
    93                         cuda[B] = cuda[B] | TIP;
    94         }
    95 }
     69void send_packet(const __u8 kind, index_t count, ...);
    9670
    9771
     
    130104
    131105
    132 chardev_t kbrd;
     106static chardev_t kbrd;
    133107static chardev_operations_t ops = {
    134108        .suspend = cuda_suspend,
     
    138112
    139113
    140 static void cuda_irq(int n, istate_t *istate)
     114__u8 cuda_get_scancode(void)
    141115{
    142116        __u8 kind;
     
    145119        receive_packet(&kind, 4, data);
    146120       
    147         if ((kind == PACKET_ADB) && (data[0] == 0x40) && (data[1] == 0x2c)) {
    148                 __u8 key = data[2];
    149                
    150                 if ((key & 0x80) != 0x80)
    151                         chardev_push_character(&kbrd, lchars[key & 0x7f]);
    152         }
     121        if ((kind == PACKET_ADB) && (data[0] == 0x40) && (data[1] == 0x2c))
     122                return data[2];
     123       
     124        return 0;
     125}
     126
     127
     128static void cuda_irq(int n, istate_t *istate)
     129{
     130        __u8 scancode = cuda_get_scancode();
     131       
     132        if ((scancode != 0) && ((scancode & 0x80) != 0x80))
     133                chardev_push_character(&kbrd, lchars[scancode & 0x7f]);
    153134}
    154135
     
    169150
    170151
     152void send_packet(const __u8 kind, index_t count, ...)
     153{
     154        index_t i;
     155        va_list va;
     156       
     157        cuda[B] = cuda[B] | TIP;
     158        cuda[ACR] = cuda[ACR] | SR_OUT;
     159        cuda[SR] = kind;
     160        cuda[B] = cuda[B] & ~TIP;
     161       
     162        va_start(va, count);
     163       
     164        for (i = 0; i < count; i++) {
     165                cuda[ACR] = cuda[ACR] | SR_OUT;
     166                cuda[SR] = va_arg(va, int);
     167                cuda[B] = cuda[B] | TACK;
     168        }
     169       
     170        va_end(va);
     171       
     172        cuda[B] = cuda[B] | TIP;
     173}
     174
     175
    171176void cpu_halt(void) {
    172177#ifdef CONFIG_POWEROFF
    173178        send_packet(PACKET_CUDA, 1, CUDA_POWERDOWN);
    174 #else
    175         send_packet(PACKET_NULL, 0);
    176179#endif
    177180        asm volatile (
  • generic/src/ipc/irq.c

    r9ceaef4 rae971b3e  
    6767{
    6868        int i;
    69 
     69       
    7070        if (!code)
    7171                return;
     
    110110                        break;
    111111#endif
    112 #if defined(ppc32) 
     112#if defined(ppc32)
    113113                case CMD_PPC32_GETCHAR:
    114                         IPC_SET_ARG2(call->data, _getc(&kbrd));
     114                        IPC_SET_ARG2(call->data, cuda_get_scancode());
    115115                        break;
    116116#endif
Note: See TracChangeset for help on using the changeset viewer.