Changeset 96e01fbc in mainline for uspace/drv/infrastructure
- Timestamp:
- 2012-08-31T17:30:29Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2be2506a
- Parents:
- e0d5bc5 (diff), 0d57c3e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/drv/infrastructure
- Files:
-
- 5 edited
-
root/root.c (modified) (1 diff)
-
rootmac/rootmac.c (modified) (7 diffs)
-
rootpc/rootpc.c (modified) (7 diffs)
-
rootvirt/devices.def (modified) (1 diff)
-
rootvirt/rootvirt.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/infrastructure/root/root.c
re0d5bc5 r96e01fbc 204 204 { 205 205 ddf_msg(LVL_DEBUG, "root_dev_add, device handle=%" PRIun, 206 d ev->handle);206 ddf_dev_get_handle(dev)); 207 207 208 208 /* -
uspace/drv/infrastructure/rootmac/rootmac.c
re0d5bc5 r96e01fbc 44 44 #define NAME "rootmac" 45 45 46 /** Obtain function soft-state from DDF function node */47 #define ROOTMAC_FUN(fnode) \48 ((rootmac_fun_t *) (fnode)->driver_data)49 50 46 typedef struct { 51 47 hw_resource_list_t hw_resources; 52 48 } rootmac_fun_t; 53 49 54 static hw_resource_t pci_conf_regs = { 55 .type = IO_RANGE, 56 .res.io_range = { 57 .address = 0xCF8, 58 .size = 8, 59 .endianness = LITTLE_ENDIAN 50 static hw_resource_t pci_conf_regs[] = { 51 { 52 .type = IO_RANGE, 53 .res.io_range = { 54 .address = 0xfec00000, 55 .size = 4, 56 .endianness = LITTLE_ENDIAN 57 } 58 }, 59 { 60 .type = IO_RANGE, 61 .res.io_range = { 62 .address = 0xfee00000, 63 .size = 4, 64 .endianness = LITTLE_ENDIAN 65 } 60 66 } 61 67 }; … … 63 69 static rootmac_fun_t pci_data = { 64 70 .hw_resources = { 65 1,66 &pci_conf_regs71 2, 72 pci_conf_regs 67 73 } 68 74 }; … … 70 76 static ddf_dev_ops_t rootmac_fun_ops; 71 77 78 /** Obtain function soft-state from DDF function node */ 79 static rootmac_fun_t *rootmac_fun(ddf_fun_t *fnode) 80 { 81 return ddf_fun_data_get(fnode); 82 } 83 72 84 static bool rootmac_add_fun(ddf_dev_t *dev, const char *name, 73 const char *str_match_id, rootmac_fun_t *fun )85 const char *str_match_id, rootmac_fun_t *fun_proto) 74 86 { 75 87 ddf_msg(LVL_DEBUG, "Adding new function '%s'.", name); 76 88 77 89 ddf_fun_t *fnode = NULL; 78 match_id_t *match_id = NULL;90 int rc; 79 91 80 92 /* Create new device. */ … … 83 95 goto failure; 84 96 85 fnode->driver_data = fun; 97 rootmac_fun_t *fun = ddf_fun_data_alloc(fnode, sizeof(rootmac_fun_t)); 98 *fun = *fun_proto; 86 99 87 /* Initialize match id list*/88 match_id = create_match_id();89 if ( match_id == NULL)100 /* Add match ID */ 101 rc = ddf_fun_add_match_id(fnode, str_match_id, 100); 102 if (rc != EOK) 90 103 goto failure; 91 104 92 match_id->id = str_match_id;93 match_id->score = 100;94 add_match_id(&fnode->match_ids, match_id);95 96 105 /* Set provided operations to the device. */ 97 fnode->ops = &rootmac_fun_ops;106 ddf_fun_set_ops(fnode, &rootmac_fun_ops); 98 107 99 108 /* Register function. */ … … 106 115 107 116 failure: 108 if (match_id != NULL)109 match_id->id = NULL;110 111 117 if (fnode != NULL) 112 118 ddf_fun_destroy(fnode); … … 127 133 static int rootmac_dev_add(ddf_dev_t *dev) 128 134 { 135 #if 0 129 136 /* Register functions */ 130 if (!rootmac_add_fun(dev, "pci0", " pangea_pci", &pci_data))137 if (!rootmac_add_fun(dev, "pci0", "intel_pci", &pci_data)) 131 138 ddf_msg(LVL_ERROR, "Failed to add functions for Mac platform."); 139 #else 140 (void)pci_data; 141 (void)rootmac_add_fun; 142 #endif 132 143 133 144 return EOK; … … 147 158 static hw_resource_list_t *rootmac_get_resources(ddf_fun_t *fnode) 148 159 { 149 rootmac_fun_t *fun = ROOTMAC_FUN(fnode);160 rootmac_fun_t *fun = rootmac_fun(fnode); 150 161 assert(fun != NULL); 151 162 -
uspace/drv/infrastructure/rootpc/rootpc.c
re0d5bc5 r96e01fbc 54 54 #define NAME "rootpc" 55 55 56 /** Obtain function soft-state from DDF function node */57 #define ROOTPC_FUN(fnode) ((rootpc_fun_t *) (fnode)->driver_data)58 59 56 typedef struct rootpc_fun { 60 57 hw_resource_list_t hw_resources; … … 75 72 }; 76 73 77 static hw_resource_t pci_conf_regs = { 78 .type = IO_RANGE, 79 .res.io_range = { 80 .address = 0xCF8, 81 .size = 8, 82 .endianness = LITTLE_ENDIAN 74 static hw_resource_t pci_conf_regs[] = { 75 { 76 .type = IO_RANGE, 77 .res.io_range = { 78 .address = 0xCF8, 79 .size = 4, 80 .endianness = LITTLE_ENDIAN 81 } 82 }, 83 { 84 .type = IO_RANGE, 85 .res.io_range = { 86 .address = 0xCFC, 87 .size = 4, 88 .endianness = LITTLE_ENDIAN 89 } 83 90 } 84 91 }; … … 86 93 static rootpc_fun_t pci_data = { 87 94 .hw_resources = { 88 1, 89 &pci_conf_regs 90 } 91 }; 95 sizeof(pci_conf_regs)/sizeof(pci_conf_regs[0]), 96 pci_conf_regs 97 } 98 }; 99 100 /** Obtain function soft-state from DDF function node */ 101 static rootpc_fun_t *rootpc_fun(ddf_fun_t *fnode) 102 { 103 return ddf_fun_data_get(fnode); 104 } 92 105 93 106 static hw_resource_list_t *rootpc_get_resources(ddf_fun_t *fnode) 94 107 { 95 rootpc_fun_t *fun = ROOTPC_FUN(fnode);108 rootpc_fun_t *fun = rootpc_fun(fnode); 96 109 97 110 assert(fun != NULL); … … 116 129 static bool 117 130 rootpc_add_fun(ddf_dev_t *dev, const char *name, const char *str_match_id, 118 rootpc_fun_t *fun )131 rootpc_fun_t *fun_proto) 119 132 { 120 133 ddf_msg(LVL_DEBUG, "Adding new function '%s'.", name); 121 134 122 135 ddf_fun_t *fnode = NULL; 123 match_id_t *match_id = NULL;136 int rc; 124 137 125 138 /* Create new device. */ … … 128 141 goto failure; 129 142 130 fnode->driver_data = fun; 131 132 /* Initialize match id list */ 133 match_id = create_match_id(); 134 if (match_id == NULL) 143 rootpc_fun_t *fun = ddf_fun_data_alloc(fnode, sizeof(rootpc_fun_t)); 144 *fun = *fun_proto; 145 146 /* Add match ID */ 147 rc = ddf_fun_add_match_id(fnode, str_match_id, 100); 148 if (rc != EOK) 135 149 goto failure; 136 150 137 match_id->id = str_match_id;138 match_id->score = 100;139 add_match_id(&fnode->match_ids, match_id);140 141 151 /* Set provided operations to the device. */ 142 fnode->ops = &rootpc_fun_ops;152 ddf_fun_set_ops(fnode, &rootpc_fun_ops); 143 153 144 154 /* Register function. */ … … 151 161 152 162 failure: 153 if (match_id != NULL)154 match_id->id = NULL;155 156 163 if (fnode != NULL) 157 164 ddf_fun_destroy(fnode); … … 176 183 { 177 184 ddf_msg(LVL_DEBUG, "rootpc_dev_add, device handle = %d", 178 (int)d ev->handle);185 (int)ddf_dev_get_handle(dev)); 179 186 180 187 /* Register functions. */ -
uspace/drv/infrastructure/rootvirt/devices.def
re0d5bc5 r96e01fbc 4 4 * Unless the list is empty, the last item shall be followed by a comma. 5 5 */ 6 7 /* Kernel framebuffer */ 8 { 9 .name = "kfb", 10 .match_id = "virtual&kfb" 11 }, 6 12 7 13 #ifdef CONFIG_TEST_DRIVERS -
uspace/drv/infrastructure/rootvirt/rootvirt.c
re0d5bc5 r96e01fbc 151 151 { 152 152 int rc; 153 const char *name = rvfun->fun->name;153 const char *name = ddf_fun_get_name(rvfun->fun); 154 154 155 155 ddf_msg(LVL_DEBUG, "rootvirt_fun_remove('%s')", name); … … 183 183 } 184 184 185 ddf_msg(LVL_DEBUG, "dev_add(handle=%d)", (int)d ev->handle);185 ddf_msg(LVL_DEBUG, "dev_add(handle=%d)", (int)ddf_dev_get_handle(dev)); 186 186 187 187 rootvirt = ddf_dev_data_alloc(dev, sizeof(rootvirt_t)); … … 207 207 static int rootvirt_dev_remove(ddf_dev_t *dev) 208 208 { 209 rootvirt_t *rootvirt = (rootvirt_t *)d ev->driver_data;209 rootvirt_t *rootvirt = (rootvirt_t *)ddf_dev_data_get(dev); 210 210 int rc; 211 211
Note:
See TracChangeset
for help on using the changeset viewer.
