Changes in uspace/drv/char/i8042/main.c [c170438:ca4730a5] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/char/i8042/main.c
rc170438 rca4730a5 43 43 #include <ddf/log.h> 44 44 #include <stdio.h> 45 #include <async.h> 45 46 #include "i8042.h" 46 47 … … 48 49 * 49 50 * @param[in] dev Device asking for the addresses. 50 * @param[out] p_io_reg Pointer to register range. 51 * @param[out] io_reg_address Base address of the memory range. 52 * @param[out] io_reg_size Size of the memory range. 51 53 * @param[out] kbd_irq Primary port IRQ. 52 54 * @param[out] mouse_irq Auxiliary port IRQ. … … 55 57 * 56 58 */ 57 static int get_my_registers(ddf_dev_t *dev, addr_range_t *p_io_reg,58 int *kbd_irq, int *mouse_irq)59 static int get_my_registers(ddf_dev_t *dev, uintptr_t *io_reg_address, 60 size_t *io_reg_size, int *kbd_irq, int *mouse_irq) 59 61 { 60 62 assert(dev); 61 63 62 async_sess_t *parent_sess = ddf_dev_parent_sess_create(dev); 64 async_sess_t *parent_sess = ddf_dev_parent_sess_create( 65 dev, EXCHANGE_SERIALIZE); 63 66 if (parent_sess == NULL) 64 67 return ENOMEM; … … 76 79 } 77 80 78 if (p_io_reg) 79 *p_io_reg = hw_resources.io_ranges.ranges[0]; 81 if (io_reg_address) 82 *io_reg_address = hw_resources.io_ranges.ranges[0].address; 83 84 if (io_reg_size) 85 *io_reg_size = hw_resources.io_ranges.ranges[0].size; 80 86 81 87 if (kbd_irq) … … 98 104 static int i8042_dev_add(ddf_dev_t *device) 99 105 { 100 addr_range_t io_regs; 106 uintptr_t io_regs = 0; 107 size_t io_size = 0; 101 108 int kbd = 0; 102 109 int mouse = 0; … … 106 113 return EINVAL; 107 114 108 rc = get_my_registers(device, &io_regs, & kbd, &mouse);115 rc = get_my_registers(device, &io_regs, &io_size, &kbd, &mouse); 109 116 if (rc != EOK) { 110 117 ddf_msg(LVL_ERROR, "Failed to get registers: %s.", … … 113 120 } 114 121 115 ddf_msg(LVL_DEBUG, 116 "I/O regs at %p (size %zuB), IRQ kbd %d, IRQ mouse %d.", 117 RNGABSPTR(io_regs), RNGSZ(io_regs), kbd, mouse); 122 ddf_msg(LVL_DEBUG, "I/O regs at %p (size %zuB), IRQ kbd %d, IRQ mouse %d.", 123 (void *) io_regs, io_size, kbd, mouse); 118 124 119 125 i8042_t *i8042 = ddf_dev_data_alloc(device, sizeof(i8042_t)); … … 123 129 } 124 130 125 rc = i8042_init(i8042, &io_regs, kbd, mouse, device);131 rc = i8042_init(i8042, (void *) io_regs, io_size, kbd, mouse, device); 126 132 if (rc != EOK) { 127 133 ddf_msg(LVL_ERROR, "Failed to initialize i8042 driver: %s.", … … 151 157 ddf_log_init(NAME); 152 158 159 /* 160 * Alleviate the virtual memory / page table pressure caused by 161 * interrupt storms when the default large stacks are used. 162 */ 163 async_set_interrupt_handler_stack_size(PAGE_SIZE); 164 153 165 return ddf_driver_main(&i8042_driver); 154 166 }
Note:
See TracChangeset
for help on using the changeset viewer.