Changes in uspace/drv/uhci-hcd/pci.c [b375bb8:fb78ae72] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-hcd/pci.c
rb375bb8 rfb78ae72 39 39 #include <device/hw_res.h> 40 40 41 #include <usb/debug.h>42 #include <pci_dev_iface.h>43 44 41 #include "pci.h" 45 42 … … 52 49 * @return Error code. 53 50 */ 54 int pci_get_my_registers(d df_dev_t *dev,51 int pci_get_my_registers(device_t *dev, 55 52 uintptr_t *io_reg_address, size_t *io_reg_size, 56 53 int *irq_no) … … 86 83 irq = res->res.interrupt.irq; 87 84 irq_found = true; 88 usb_log_debug2("Found interrupt: %d.\n", irq);89 85 break; 90 86 case IO_RANGE: 91 io_address = res->res.io_range.address; 87 io_address = (uintptr_t) 88 res->res.io_range.address; 92 89 io_size = res->res.io_range.size; 93 usb_log_debug2("Found io: %llx %zu.\n",94 res->res.io_range.address, res->res.io_range.size);95 90 io_found = true; 96 91 break; … … 110 105 } 111 106 112 *io_reg_address = io_address; 113 *io_reg_size = io_size; 114 *irq_no = irq; 107 if (io_reg_address != NULL) { 108 *io_reg_address = io_address; 109 } 110 if (io_reg_size != NULL) { 111 *io_reg_size = io_size; 112 } 113 if (irq_no != NULL) { 114 *irq_no = irq; 115 } 115 116 116 117 rc = EOK; … … 121 122 } 122 123 /*----------------------------------------------------------------------------*/ 123 int pci_enable_interrupts(d df_dev_t *device)124 int pci_enable_interrupts(device_t *device) 124 125 { 125 126 int parent_phone = devman_parent_device_connect(device->handle, 126 127 IPC_FLAG_BLOCKING); 127 128 bool enabled = hw_res_enable_interrupt(parent_phone); 128 async_hangup(parent_phone);129 129 return enabled ? EOK : EIO; 130 130 } 131 /*----------------------------------------------------------------------------*/132 int pci_disable_legacy(ddf_dev_t *device)133 {134 assert(device);135 int parent_phone = devman_parent_device_connect(device->handle,136 IPC_FLAG_BLOCKING);137 if (parent_phone < 0) {138 return parent_phone;139 }140 141 /* See UHCI design guide for these values,142 * write all WC bits in USB legacy register */143 sysarg_t address = 0xc0;144 sysarg_t value = 0x8f00;145 146 int rc = async_req_3_0(parent_phone, DEV_IFACE_ID(PCI_DEV_IFACE),147 IPC_M_CONFIG_SPACE_WRITE_16, address, value);148 async_hangup(parent_phone);149 150 return rc;151 }152 /*----------------------------------------------------------------------------*/153 131 /** 154 132 * @}
Note:
See TracChangeset
for help on using the changeset viewer.