Changeset 28ecadb in mainline for kernel/genarch
- Timestamp:
- 2006-09-22T21:44:54Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5d684e4
- Parents:
- 16529d5
- Location:
- kernel/genarch
- Files:
-
- 3 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/Makefile.inc
r16529d5 r28ecadb 73 73 endif 74 74 75 ## Sun keyboard 76 ifeq ($(CONFIG_SUN_KBD),y) 77 GENARCH_SOURCES += \ 78 genarch/src/kbd/key.c \ 79 genarch/src/kbd/scanc_sun.c 80 endif 81 75 82 ## z8530 controller 76 83 ifeq ($(CONFIG_Z8530),y) 77 84 GENARCH_SOURCES += \ 78 genarch/src/kbd/z8530.c \ 79 genarch/src/kbd/key.c \ 80 genarch/src/kbd/scanc_sun.c 85 genarch/src/kbd/z8530.c 81 86 endif 82 87 … … 84 89 ifeq ($(CONFIG_NS16550),y) 85 90 GENARCH_SOURCES += \ 86 genarch/src/kbd/ns16550.c \ 87 genarch/src/kbd/key.c \ 88 genarch/src/kbd/scanc_sun.c 91 genarch/src/kbd/ns16550.c 89 92 endif 90 93 … … 93 96 ifeq ($(CONFIG_OFW_TREE), y) 94 97 GENARCH_SOURCES += \ 95 genarch/src/ofw/ofw_tree.c 98 genarch/src/ofw/ofw_tree.c \ 99 genarch/src/ofw/ebus.c \ 100 genarch/src/ofw/fhc.c \ 101 genarch/src/ofw/pci.c 96 102 endif -
kernel/genarch/include/kbd/i8042.h
r16529d5 r28ecadb 36 36 #define KERN_I8042_H_ 37 37 38 #include <typedefs.h> 39 38 40 extern void i8042_init(void); 39 41 extern void i8042_poll(void); 40 42 extern void i8042_grab(void); 41 43 extern void i8042_release(void); 44 extern char i8042_key_read(chardev_t *d); 42 45 43 46 #endif -
kernel/genarch/include/kbd/key.h
r16529d5 r28ecadb 50 50 extern void active_read_key_pressed(uint8_t sc); 51 51 52 extern char key_read(chardev_t *d);53 54 52 #endif 55 53 -
kernel/genarch/include/kbd/ns16550.h
r16529d5 r28ecadb 38 38 #define KERN_NS16550_H_ 39 39 40 #include <typedefs.h> 41 40 42 extern void ns16550_init(void); 41 43 extern void ns16550_poll(void); 42 44 extern void ns16550_grab(void); 43 45 extern void ns16550_release(void); 46 extern char ns16550_key_read(chardev_t *d); 44 47 45 48 #endif -
kernel/genarch/include/kbd/z8530.h
r16529d5 r28ecadb 49 49 extern void z8530_release(void); 50 50 extern void z8530_interrupt(void); 51 extern char z8530_key_read(chardev_t *d); 51 52 52 53 #endif -
kernel/genarch/include/ofw/ofw_tree.h
r16529d5 r28ecadb 57 57 }; 58 58 59 /* 60 * Definition of 'reg' and 'ranges' properties for various buses. 61 */ 62 63 struct ofw_fhc_reg { 64 uint64_t addr; 65 uint32_t size; 66 } __attribute__ ((packed)); 67 typedef struct ofw_fhc_reg ofw_fhc_reg_t; 68 69 struct ofw_fhc_range { 70 uint64_t child_base; 71 uint64_t parent_base; 72 uint32_t size; 73 } __attribute__ ((packed)); 74 typedef struct ofw_fhc_range ofw_fhc_range_t; 75 76 struct ofw_central_reg { 77 uint64_t addr; 78 uint32_t size; 79 } __attribute__ ((packed)); 80 typedef struct ofw_central_reg ofw_central_reg_t; 81 82 struct ofw_central_range { 83 uint64_t child_base; 84 uint64_t parent_base; 85 uint32_t size; 86 } __attribute__ ((packed)); 87 typedef struct ofw_central_range ofw_central_range_t; 88 89 struct ofw_ebus_reg { 90 uint32_t space; 91 uint32_t addr; 92 uint32_t size; 93 } __attribute__ ((packed)); 94 typedef struct ofw_ebus_reg ofw_ebus_reg_t; 95 96 struct ofw_ebus_range { 97 uint32_t child_space; 98 uint32_t child_base; 99 uint32_t parent_space; 100 uint64_t parent_base; /* group phys.mid and phys.lo together */ 101 uint32_t size; 102 } __attribute__ ((packed)); 103 typedef struct ofw_ebus_range ofw_ebus_range_t; 104 105 struct ofw_pci_reg { 106 uint32_t space; /* needs to masked to obtain pure space id */ 107 uint64_t addr; /* group phys.mid and phys.lo together */ 108 uint64_t size; 109 } __attribute__ ((packed)); 110 typedef struct ofw_pci_reg ofw_pci_reg_t; 111 112 struct ofw_pci_range { 113 uint32_t space; 114 uint64_t child_base; /* group phys.mid and phys.lo together */ 115 uint64_t parent_base; 116 uint64_t size; 117 } __attribute__ ((packed)); 118 typedef struct ofw_pci_range ofw_pci_range_t; 119 120 struct ofw_ffb_reg { 121 } __attribute__ ((packed)); 122 typedef struct ofw_ffb_reg ofw_ffb_reg_t; 123 59 124 extern void ofw_tree_init(ofw_tree_node_t *root); 60 125 extern void ofw_tree_print(void); 61 126 extern const char *ofw_tree_node_name(const ofw_tree_node_t *node); 62 127 extern ofw_tree_node_t *ofw_tree_lookup(const char *path); 128 extern ofw_tree_property_t *ofw_tree_getprop(const ofw_tree_node_t *node, const char *name); 129 130 extern bool ofw_fhc_apply_ranges(ofw_tree_node_t *node, ofw_fhc_reg_t *reg, uintptr_t *pa); 131 extern bool ofw_central_apply_ranges(ofw_tree_node_t *node, ofw_central_reg_t *reg, uintptr_t *pa); 132 extern bool ofw_ebus_apply_ranges(ofw_tree_node_t *node, ofw_ebus_reg_t *reg, uintptr_t *pa); 133 extern bool ofw_pci_apply_ranges(ofw_tree_node_t *node, ofw_pci_reg_t *reg, uintptr_t *pa); 134 extern bool ofw_ffb_apply_ranges(ofw_tree_node_t *node, ofw_ffb_reg_t *reg, uintptr_t *pa); 63 135 64 136 #endif -
kernel/genarch/src/kbd/i8042.c
r16529d5 r28ecadb 81 81 static void i8042_resume(chardev_t *); 82 82 83 chardev_t kbrd;84 83 static chardev_operations_t ops = { 85 84 .suspend = i8042_suspend, 86 85 .resume = i8042_resume, 87 .read = key_read86 .read = i8042_key_read 88 87 }; 89 88 … … 174 173 } 175 174 176 char key_read(chardev_t *d)175 char i8042_key_read(chardev_t *d) 177 176 { 178 177 char ch; -
kernel/genarch/src/kbd/key.c
r16529d5 r28ecadb 54 54 #define ACTIVE_READ_BUFF_SIZE 16 /* Must be power of 2 */ 55 55 56 chardev_t kbrd; 57 56 58 static uint8_t active_read_buff[ACTIVE_READ_BUFF_SIZE]; 57 59 -
kernel/genarch/src/kbd/ns16550.c
r16529d5 r28ecadb 60 60 static void ns16550_resume(chardev_t *); 61 61 62 chardev_t kbrd;63 62 static chardev_operations_t ops = { 64 63 .suspend = ns16550_suspend, 65 64 .resume = ns16550_resume, 66 .read = key_read65 .read = ns16550_key_read 67 66 }; 68 67 … … 119 118 } 120 119 121 char key_read(chardev_t *d)120 char ns16550_key_read(chardev_t *d) 122 121 { 123 122 char ch; -
kernel/genarch/src/kbd/z8530.c
r16529d5 r28ecadb 63 63 static void z8530_resume(chardev_t *); 64 64 65 chardev_t kbrd;66 65 static chardev_operations_t ops = { 67 66 .suspend = z8530_suspend, 68 67 .resume = z8530_resume, 69 .read = key_read68 .read = z8530_key_read 70 69 }; 71 70 … … 142 141 } 143 142 144 char key_read(chardev_t *d)143 char z8530_key_read(chardev_t *d) 145 144 { 146 145 char ch; -
kernel/genarch/src/ofw/ofw_tree.c
r16529d5 r28ecadb 52 52 } 53 53 54 /** Get OpenFirmware node property. 55 * 56 * @param node Node in which to lookup the property. 57 * @param name Name of the property. 58 * 59 * @return Pointer to the property structure or NULL if no such property. 60 */ 61 ofw_tree_property_t *ofw_tree_getprop(const ofw_tree_node_t *node, const char *name) 62 { 63 int i; 64 65 for (i = 0; i < node->properties; i++) { 66 if (strcmp(node->property[i].name, name) == 0) 67 return &node->property[i]; 68 } 69 70 return NULL; 71 } 72 54 73 /** Return value of the 'name' property. 55 74 * … … 60 79 const char *ofw_tree_node_name(const ofw_tree_node_t *node) 61 80 { 62 int i;81 ofw_tree_property_t *prop; 63 82 64 for (i = 0; i < node->properties; i++) { 65 if (strncmp(node->property[i].name, "name", strlen("name")) == 0) { 66 if (node->property[i].size < 2) 67 panic("Invalid name property.\n"); 68 return node->property[i].value; 69 } 70 } 83 prop = ofw_tree_getprop(node, "name"); 84 if (!prop) 85 panic("Node without name property.\n"); 86 87 if (prop->size < 2) 88 panic("Invalid name property.\n"); 71 89 72 panic("Node without name property.\n");90 return prop->value; 73 91 } 74 92 … … 76 94 * 77 95 * @param node Node whose child is being looked up. 78 * @param da_name Disambigued name of the child being looked up.96 * @param name Name of the child being looked up. 79 97 * 80 98 * @return NULL if there is no such child or pointer to the matching child node. 81 99 */ 82 static ofw_tree_node_t *ofw_tree_find_child(ofw_tree_node_t *node, const char * da_name)100 static ofw_tree_node_t *ofw_tree_find_child(ofw_tree_node_t *node, const char *name) 83 101 { 84 102 ofw_tree_node_t *cur; 85 103 104 /* 105 * Try to find the disambigued name. 106 */ 86 107 for (cur = node->child; cur; cur = cur->peer) { 87 if (str ncmp(cur->da_name, da_name, strlen(da_name)) == 0)108 if (strcmp(cur->da_name, name) == 0) 88 109 return cur; 89 110 } 90 111 112 /* 113 * Disambigued name not found. 114 * Lets try our luck with possibly ambiguous "name" property. 115 * 116 * We need to do this because paths stored in "/aliases" 117 * are not always fully-qualified. 118 */ 119 for (cur = node->child; cur; cur = cur->peer) { 120 if (strcmp(ofw_tree_node_name(cur), name) == 0) 121 return cur; 122 } 123 91 124 return NULL; 92 125 }
Note:
See TracChangeset
for help on using the changeset viewer.