Changeset ce687bbe in mainline
- Timestamp:
- 2010-12-04T17:51:51Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9ca0013
- Parents:
- 4689d40
- Location:
- uspace/drv/vhc
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/vhc/addrmgm.c
r4689d40 rce687bbe 49 49 typedef struct { 50 50 usb_address_t address; 51 devman_handle_t devman_handle; 51 52 bool available; 52 53 } address_info_t; … … 69 70 dev_address[i].address = i + 1; 70 71 dev_address[i].available = true; 72 dev_address[i].devman_handle = 0; 71 73 } 72 74 … … 120 122 } 121 123 124 int bind_address(device_t *dev, usb_address_t address, devman_handle_t handle) 125 { 126 if (address == DEFAULT_ADDRESS) { 127 return EPERM; 128 } 129 130 int rc = EPERM; 131 132 fibril_mutex_lock(&address_guard); 133 usb_address_t i; 134 for (i = 0; i < ADDRESS_COUNT; i++) { 135 if (dev_address[i].address == address) { 136 if (dev_address[i].available) { 137 rc = ENOENT; 138 break; 139 } 140 141 dev_address[i].devman_handle = handle; 142 rc = EOK; 143 break; 144 } 145 } 146 fibril_mutex_unlock(&address_guard); 147 148 return rc; 149 } 150 151 int tell_address(device_t *dev, devman_handle_t handle, usb_address_t *address) 152 { 153 int rc = ENOENT; 154 155 fibril_mutex_lock(&address_guard); 156 usb_address_t i; 157 for (i = 0; i < ADDRESS_COUNT; i++) { 158 if (dev_address[i].devman_handle == handle) { 159 *address = dev_address[i].address; 160 rc = EOK; 161 break; 162 } 163 } 164 fibril_mutex_unlock(&address_guard); 165 166 return rc; 167 } 168 122 169 int release_address(device_t *dev, usb_address_t address) 123 170 { … … 138 185 139 186 dev_address[i].available = true; 187 dev_address[i].devman_handle = 0; 140 188 rc = EOK; 141 189 break; -
uspace/drv/vhc/conn.h
r4689d40 rce687bbe 52 52 int request_address(device_t *, usb_address_t *); 53 53 int release_address(device_t *, usb_address_t); 54 int bind_address(device_t *, usb_address_t, devman_handle_t); 54 55 56 int tell_address(device_t *, devman_handle_t, usb_address_t *); 55 57 56 58 void default_connection_handler(device_t *, ipc_callid_t, ipc_call_t *); -
uspace/drv/vhc/connhost.c
r4689d40 rce687bbe 148 148 149 149 150 static int get_address(device_t *dev, devman_handle_t handle,151 usb_address_t *address)152 {153 return ENOTSUP;154 }155 156 150 static int interrupt_out(device_t *dev, usb_target_t target, 157 151 void *data, size_t size, … … 226 220 227 221 usbhc_iface_t vhc_iface = { 228 .tell_address = get_address,222 .tell_address = tell_address, 229 223 230 224 .reserve_default_address = reserve_default_address, 231 225 .release_default_address = release_default_address, 232 226 .request_address = request_address, 227 .bind_address = bind_address, 233 228 .release_address = release_address, 234 229
Note:
See TracChangeset
for help on using the changeset viewer.