Changeset 5f7d96e in mainline for uspace/drv
- Timestamp:
- 2010-12-27T18:18:03Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 43c3937
- Parents:
- e080332 (diff), e84d65a (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
- Files:
-
- 7 edited
-
ns8250/ns8250.c (modified) (3 diffs)
-
pciintel/pci.c (modified) (2 diffs)
-
root/root.c (modified) (3 diffs)
-
rootpc/rootpc.c (modified) (3 diffs)
-
rootpc/rootpc.ma (modified) (1 diff)
-
usbkbd/main.c (modified) (4 diffs)
-
vhc/hcd.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/ns8250/ns8250.c
re080332 r5f7d96e 342 342 printf(NAME ": failed to connect to the parent driver of the " 343 343 "device %s.\n", dev->name); 344 ret = EPARTY; /* FIXME: use another EC */344 ret = dev->parent_phone; 345 345 goto failed; 346 346 } 347 347 348 348 /* Get hw resources. */ 349 if (!get_hw_resources(dev->parent_phone, &hw_resources)) { 349 ret = get_hw_resources(dev->parent_phone, &hw_resources); 350 if (ret != EOK) { 350 351 printf(NAME ": failed to get hw resources for the device " 351 352 "%s.\n", dev->name); 352 ret = EPARTY; /* FIXME: use another EC */353 353 goto failed; 354 354 } … … 374 374 printf(NAME ": i/o range assigned to the device " 375 375 "%s is too small.\n", dev->name); 376 ret = E PARTY; /* FIXME: use another EC */376 ret = ELIMIT; 377 377 goto failed; 378 378 } … … 390 390 printf(NAME ": missing hw resource(s) for the device %s.\n", 391 391 dev->name); 392 ret = E PARTY; /* FIXME: use another EC */392 ret = ENOENT; 393 393 goto failed; 394 394 } -
uspace/drv/pciintel/pci.c
re080332 r5f7d96e 452 452 static int pci_add_device(device_t *dev) 453 453 { 454 int rc; 455 454 456 printf(NAME ": pci_add_device\n"); 455 457 … … 466 468 "parent's driver.\n"); 467 469 delete_pci_bus_data(bus_data); 468 return EPARTY; /* FIXME: use another EC */470 return dev->parent_phone; 469 471 } 470 472 471 473 hw_resource_list_t hw_resources; 472 474 473 if (!get_hw_resources(dev->parent_phone, &hw_resources)) { 475 rc = get_hw_resources(dev->parent_phone, &hw_resources); 476 if (rc != EOK) { 474 477 printf(NAME ": pci_add_device failed to get hw resources for " 475 478 "the device.\n"); 476 479 delete_pci_bus_data(bus_data); 477 480 ipc_hangup(dev->parent_phone); 478 return EPARTY; /* FIXME: use another EC */481 return rc; 479 482 } 480 483 -
uspace/drv/root/root.c
re080332 r5f7d96e 47 47 #include <macros.h> 48 48 #include <inttypes.h> 49 #include <sysinfo.h> 49 50 50 51 #include <driver.h> … … 55 56 56 57 #define PLATFORM_DEVICE_NAME "hw" 57 #define PLATFORM_DEVICE_MATCH_ID STRING(UARCH)58 #define PLATFORM_DEVICE_MATCH_ID_FMT "platform/%s" 58 59 #define PLATFORM_DEVICE_MATCH_SCORE 100 59 60 … … 100 101 static int add_platform_child(device_t *parent) 101 102 { 103 char *match_id; 104 char *platform; 105 size_t platform_size; 106 int res; 107 108 /* Get platform name from sysinfo. */ 109 110 platform = sysinfo_get_data("platform", &platform_size); 111 if (platform == NULL) { 112 printf(NAME ": Failed to obtain platform name.\n"); 113 return ENOENT; 114 } 115 116 /* Null-terminate string. */ 117 platform = realloc(platform, platform_size + 1); 118 if (platform == NULL) { 119 printf(NAME ": Memory allocation failed.\n"); 120 return ENOMEM; 121 } 122 123 platform[platform_size] = '\0'; 124 125 /* Construct match ID. */ 126 127 if (asprintf(&match_id, PLATFORM_DEVICE_MATCH_ID_FMT, platform) == -1) { 128 printf(NAME ": Memory allocation failed.\n"); 129 return ENOMEM; 130 } 131 132 /* Add child. */ 133 102 134 printf(NAME ": adding new child for platform device.\n"); 103 135 printf(NAME ": device node is `%s' (%d %s)\n", PLATFORM_DEVICE_NAME, 104 PLATFORM_DEVICE_MATCH_SCORE, PLATFORM_DEVICE_MATCH_ID); 105 106 int res = child_device_register_wrapper(parent, PLATFORM_DEVICE_NAME, 107 PLATFORM_DEVICE_MATCH_ID, PLATFORM_DEVICE_MATCH_SCORE, 108 NULL); 136 PLATFORM_DEVICE_MATCH_SCORE, match_id); 137 138 res = child_device_register_wrapper(parent, PLATFORM_DEVICE_NAME, 139 match_id, PLATFORM_DEVICE_MATCH_SCORE, NULL); 109 140 110 141 return res; -
uspace/drv/rootpc/rootpc.c
re080332 r5f7d96e 28 28 29 29 /** 30 * @defgroup root_pc Root HW device driver for ia32 and amd64 platform.31 * @brief HelenOS root HW device driver for ia32 and amd64 platform.30 * @defgroup root_pc PC platform driver. 31 * @brief HelenOS PC platform driver. 32 32 * @{ 33 33 */ … … 182 182 /* Register child devices. */ 183 183 if (!rootpc_add_children(dev)) { 184 printf(NAME ": failed to add child devices for platform " 185 "ia32.\n"); 184 printf(NAME ": failed to add child devices for PC platform.\n"); 186 185 } 187 186 … … 196 195 int main(int argc, char *argv[]) 197 196 { 198 printf(NAME ": HelenOS rootpc devicedriver\n");197 printf(NAME ": HelenOS PC platform driver\n"); 199 198 root_pc_init(); 200 199 return driver_main(&rootpc_driver); -
uspace/drv/rootpc/rootpc.ma
re080332 r5f7d96e 1 10 ia32 2 10 amd64 1 10 platform/pc -
uspace/drv/usbkbd/main.c
re080332 r5f7d96e 29 29 #include <driver.h> 30 30 #include <ipc/driver.h> 31 #include <ipc/kbd.h> 32 #include <io/keycode.h> 33 #include <io/console.h> 31 34 #include <errno.h> 32 35 #include <fibril.h> … … 41 44 #define GUESSED_POLL_ENDPOINT 1 42 45 46 static void default_connection_handler(device_t *, ipc_callid_t, ipc_call_t *); 47 static device_ops_t keyboard_ops = { 48 .default_handler = default_connection_handler 49 }; 50 51 static int console_callback_phone = -1; 52 53 /** Default handler for IPC methods not handled by DDF. 54 * 55 * @param dev Device handling the call. 56 * @param icallid Call id. 57 * @param icall Call data. 58 */ 59 void default_connection_handler(device_t *dev, 60 ipc_callid_t icallid, ipc_call_t *icall) 61 { 62 sysarg_t method = IPC_GET_IMETHOD(*icall); 63 64 if (method == IPC_M_CONNECT_TO_ME) { 65 int callback = IPC_GET_ARG5(*icall); 66 67 if (console_callback_phone != -1) { 68 ipc_answer_0(icallid, ELIMIT); 69 return; 70 } 71 72 console_callback_phone = callback; 73 ipc_answer_0(icallid, EOK); 74 return; 75 } 76 77 ipc_answer_0(icallid, EINVAL); 78 } 79 80 static void send_key(int key, int type, wchar_t c) { 81 async_msg_4(console_callback_phone, KBD_EVENT, type, key, 82 KM_NUM_LOCK, c); 83 } 84 85 static void send_alnum(int key, wchar_t c) { 86 printf(NAME ": sending key '%lc' to console\n", (wint_t) c); 87 send_key(key, KEY_PRESS, c); 88 send_key(key, KEY_RELEASE, c); 89 } 90 43 91 /* 44 92 * Callbacks for parser … … 183 231 sizeof(usb_hid_report_in_callbacks_t)); 184 232 callbacks->keyboard = usbkbd_process_keycodes; 233 234 if (console_callback_phone != -1) { 235 static size_t counter = 0; 236 counter++; 237 if (counter > 3) { 238 counter = 0; 239 send_alnum(KC_A, L'a'); 240 } 241 } 185 242 186 243 usb_hid_parse_report(kbd_dev->parser, buffer, actual_size, callbacks, … … 289 346 fibril_add_ready(fid); 290 347 348 dev->ops = &keyboard_ops; 349 350 add_device_to_class(dev, "keyboard"); 351 291 352 /* 292 353 * Hurrah, device is initialized. -
uspace/drv/vhc/hcd.c
re080332 r5f7d96e 72 72 73 73 /* 74 * Initialize address management.75 */76 address_init();77 78 /*79 74 * Initialize our hub and announce its presence. 80 75 */ … … 108 103 printf(NAME ": virtual USB host controller driver.\n"); 109 104 105 /* 106 * Initialize address management. 107 */ 108 address_init(); 109 110 /* 111 * Run the transfer scheduler. 112 */ 110 113 hc_manager(); 111 114 115 /* 116 * We are also a driver within devman framework. 117 */ 112 118 return driver_main(&vhc_driver); 113 119 }
Note:
See TracChangeset
for help on using the changeset viewer.
