Changeset a3b5831 in mainline
- Timestamp:
- 2008-11-28T22:46:26Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8df7a1c
- Parents:
- 78ee8b0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/drivers/psycho.c
r78ee8b0 ra3b5831 41 41 #include <arch/types.h> 42 42 #include <genarch/ofw/ofw_tree.h> 43 #include <byteorder.h> 43 44 44 #define PSYCHO_IGN 0x7c0 45 #define PSYCHO_KEYBOARD_INR 0x29 45 #define PSYCHO_INTERNAL_REG 2 46 47 #define PSYCHO_OBIO_IMR_BASE (0x1000 / sizeof(uint64_t)) 48 #define PSYCHO_OBIO_IMR(ino) (PSYCHO_OBIO_IMR_BASE + ((ino) & INO_MASK)) 49 50 #define PSYCHO_OBIO_CIR_BASE (0x1800 / sizeof(uint64_t)) 51 #define PSYCHO_OBIO_CIR(ino) (PSYCHO_OBIO_CIR_BASE + ((ino) & INO_MASK)) 46 52 47 53 psycho_t *psycho_a = NULL; … … 57 63 if (!prop || !prop->value) 58 64 return NULL; 65 66 count_t regs = prop->size / sizeof(ofw_upa_reg_t); 67 if (regs < PSYCHO_INTERNAL_REG + 1) 68 return NULL; 59 69 60 ofw_upa_reg_t *reg = &((ofw_upa_reg_t *) prop->value)[0]; /* XXX */ 70 ofw_upa_reg_t *reg = 71 &((ofw_upa_reg_t *) prop->value)[PSYCHO_INTERNAL_REG]; 61 72 62 73 uintptr_t paddr; … … 75 86 void psycho_enable_interrupt(psycho_t *psycho, int inr) 76 87 { 77 inr -= PSYCHO_IGN; 78 switch (inr) { 79 case PSYCHO_KEYBOARD_INR: 80 psycho->regs[0] = 1; /* XXX */ 81 break; 82 default: 83 panic("Unexpected INR (%d)\n", inr); 84 break; 85 } 88 int ino = inr & ~IGN_MASK; 89 uint64_t imr = psycho->regs[PSYCHO_OBIO_IMR(ino)]; 90 imr |= host2uint64_t_le(IMAP_V_MASK); 91 psycho->regs[PSYCHO_OBIO_IMR(ino)] = imr; 86 92 } 87 93 88 94 void psycho_clear_interrupt(psycho_t *psycho, int inr) 89 95 { 90 inr -= PSYCHO_IGN; 91 switch (inr) { 92 case PSYCHO_KEYBOARD_INR: 93 psycho->regs[0] = 0; /* XXX */ 94 break; 95 default: 96 panic("Unexpected INR (%d)\n", inr); 97 break; 98 } 96 int ino = inr & ~IGN_MASK; 97 uint64_t idle = host2uint64_t_le(0); 98 psycho->regs[PSYCHO_OBIO_CIR(ino)] = idle; 99 99 } 100 100
Note:
See TracChangeset
for help on using the changeset viewer.