Changeset 9a66bc2e in mainline for uspace/srv
- Timestamp:
- 2010-04-04T21:52:26Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8c06905
- Parents:
- 5cd136ab
- Location:
- uspace/srv
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/devman/main.c
r5cd136ab r9a66bc2e 258 258 } 259 259 260 static void devman_forward(ipc_callid_t iid, ipc_call_t *icall, bool drv_to_parent) { 261 device_handle_t handle; 260 static void devman_forward(ipc_callid_t iid, ipc_call_t *icall, bool drv_to_parent) { 261 262 device_handle_t handle = IPC_GET_ARG2(*icall); 263 printf(NAME ": devman_forward - trying to forward connection to device with handle %x.\n", handle); 264 262 265 node_t *dev = find_dev_node(&device_tree, handle); 263 266 if (NULL == dev) { 267 printf(NAME ": devman_forward error - no device with handle %x was found.\n", handle); 264 268 ipc_answer_0(iid, ENOENT); 265 269 return; … … 269 273 270 274 if (drv_to_parent) { 271 driver = dev->parent->drv; 275 if (NULL != dev->parent) { 276 driver = dev->parent->drv; 277 } 272 278 } else { 273 279 driver = dev->drv; 274 280 } 275 281 276 if (NULL == driver) { 282 if (NULL == driver) { 283 printf(NAME ": devman_forward error - no driver to connect to.\n", handle); 277 284 ipc_answer_0(iid, ENOENT); 278 285 return; … … 286 293 } 287 294 295 if (driver->phone <= 0) { 296 printf(NAME ": devman_forward: cound not forward to driver %s (the driver's phone is %x).\n", driver->name, driver->phone); 297 return; 298 } 299 printf(NAME ": devman_forward: forward to driver %s with phone %d.\n", driver->name, driver->phone); 288 300 ipc_forward_fast(iid, driver->phone, method, dev->handle, 0, IPC_FF_NONE); 289 301 } -
uspace/srv/drivers/rootia32/rootia32.c
r5cd136ab r9a66bc2e 50 50 #include <ipc/devman.h> 51 51 #include <ipc/dev_iface.h> 52 #include <resource.h> 52 53 53 54 #define NAME "rootia32" 54 55 55 typedef struct rootia32_ dev_data {56 typedef struct rootia32_child_dev_data { 56 57 hw_resource_list_t hw_resources; 57 } rootia32_ dev_data_t;58 } rootia32_child_dev_data_t; 58 59 59 60 static bool rootia32_add_device(device_t *dev); … … 82 83 }; 83 84 84 static rootia32_ dev_data_t pci_data = {85 static rootia32_child_dev_data_t pci_data = { 85 86 .hw_resources = { 86 87 1, … … 89 90 }; 90 91 92 static hw_resource_list_t * rootia32_get_child_resources(device_t *dev) 93 { 94 rootia32_child_dev_data_t *data = (rootia32_child_dev_data_t *)dev->driver_data; 95 if (NULL == data) { 96 return NULL; 97 } 98 return &data->hw_resources; 99 } 100 101 static bool rootia32_enable_child_interrupt(device_t *dev) 102 { 103 // TODO 104 105 return false; 106 } 107 108 static resource_iface_t child_res_iface = { 109 &rootia32_get_child_resources, 110 &rootia32_enable_child_interrupt 111 }; 112 91 113 static bool rootia32_add_child( 92 114 device_t *parent, const char *name, const char *str_match_id, 93 rootia32_ dev_data_t *drv_data)115 rootia32_child_dev_data_t *drv_data) 94 116 { 95 117 printf(NAME ": adding new child device '%s'.\n", name); … … 113 135 match_id->score = 100; 114 136 add_match_id(&child->match_ids, match_id); 137 138 // add an interface to the device 139 device_set_iface(child, HW_RES_DEV_IFACE, &child_res_iface); 115 140 116 141 // register child device … … 151 176 if (!rootia32_add_children(dev)) { 152 177 printf(NAME ": failed to add child devices for platform ia32.\n"); 153 return false;154 178 } 155 179
Note:
See TracChangeset
for help on using the changeset viewer.