Changeset 0b414b5 in mainline for kernel/genarch/src
- Timestamp:
- 2006-10-02T21:07:23Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 233af8c5
- Parents:
- 36db5ac
- Location:
- kernel/genarch/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/kbd/z8530.c
r36db5ac r0b414b5 39 39 #include <genarch/kbd/scanc.h> 40 40 #include <genarch/kbd/scanc_sun.h> 41 #include <arch/drivers/fhc.h>42 41 #include <arch/drivers/z8530.h> 43 42 #include <arch/interrupt.h> … … 107 106 108 107 z8530_write_a(WR9, WR9_MIE); /* Master Interrupt Enable. */ 109 110 /*111 * We need to initialize the FireHose Controller,112 * to which is this z8530 attached. Otherwise113 * interrupts generated by the z8530 would not114 * be forwarded to the CPU.115 */116 fhc_init();117 108 } 118 109 -
kernel/genarch/src/ofw/ebus.c
r36db5ac r0b414b5 40 40 #include <func.h> 41 41 #include <panic.h> 42 #include <debug.h> 42 43 #include <macros.h> 43 44 … … 74 75 } 75 76 77 bool ofw_ebus_map_interrupts(ofw_tree_node_t *node, ofw_ebus_reg_t *reg, uint32_t interrupt, int *ino) 78 { 79 ofw_tree_property_t *prop; 80 ofw_tree_node_t *controller; 81 82 prop = ofw_tree_getprop(node, "interrupt-map"); 83 if (!prop || !prop->value) 84 return false; 85 86 ofw_ebus_intr_map_t *intr_map = prop->value; 87 count_t count = prop->size / sizeof(ofw_ebus_intr_map_t); 88 89 ASSERT(count); 90 91 prop = ofw_tree_getprop(node, "interrupt-map-mask"); 92 if (!prop || !prop->value) 93 return false; 94 95 ofw_ebus_intr_mask_t *intr_mask = prop->value; 96 97 ASSERT(prop->size == sizeof(ofw_ebus_intr_mask_t)); 98 99 uint32_t space = reg->space & intr_mask->space_mask; 100 uint32_t addr = reg->addr & intr_mask->addr_mask; 101 uint32_t intr = interrupt & intr_mask->intr_mask; 102 103 int i; 104 for (i = 0; i < count; i++) { 105 if ((intr_map[i].space == space) && (intr_map[i].addr == addr) 106 && (intr_map[i].intr == intr)) 107 goto found; 108 } 109 return false; 110 111 found: 112 /* 113 * We found the device that functions as an interrupt controller 114 * for the interrupt. We also found mapping from interrupt to INO. 115 */ 116 117 controller = ofw_tree_find_node_by_handle(ofw_tree_lookup("/"), intr_map[i].controller_handle); 118 119 *ino = intr_map[i].controller_ino; 120 return true; 121 } 122 76 123 /** @} 77 124 */ -
kernel/genarch/src/ofw/fhc.c
r36db5ac r0b414b5 37 37 38 38 #include <genarch/ofw/ofw_tree.h> 39 #include <arch/drivers/fhc.h> 39 40 #include <arch/memstr.h> 40 41 #include <func.h> … … 109 110 } 110 111 112 bool ofw_fhc_map_interrupts(ofw_tree_node_t *node, ofw_fhc_reg_t *reg, uint32_t interrupt, int *ino) 113 { 114 fhc_t *fhc = NULL; 115 if (!node->device) { 116 fhc = fhc_init(node); 117 if (!fhc) 118 return false; 119 node->device = fhc; 120 central_fhc = fhc; 121 } 122 123 /* 124 * The interrupt controller for the interrupt is the FHC itself. 125 */ 126 fhc_enable_interrupt(fhc, interrupt); 127 128 *ino = interrupt; 129 return true; 130 } 131 111 132 /** @} 112 133 */
Note:
See TracChangeset
for help on using the changeset viewer.