Changeset b3c39690 in mainline
- Timestamp:
- 2018-01-21T23:19:20Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- db51a6a6
- Parents:
- 09187c6e
- git-author:
- Ondřej Hlavatý <aearsis@…> (2018-01-21 23:19:14)
- git-committer:
- Ondřej Hlavatý <aearsis@…> (2018-01-21 23:19:20)
- Location:
- uspace
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/usbdiag/device.c
r09187c6e rb3c39690 64 64 }; 65 65 66 static int device_init(usbdiag_dev_t *dev )66 static int device_init(usbdiag_dev_t *dev, const usb_endpoint_description_t **endpoints) 67 67 { 68 68 int rc; … … 77 77 78 78 #define _MAP_EP(target, ep_no) do {\ 79 usb_endpoint_mapping_t *epm = usb_device_get_mapped_ep (dev->usb_dev, USBDIAG_EP_##ep_no);\79 usb_endpoint_mapping_t *epm = usb_device_get_mapped_ep_desc(dev->usb_dev, endpoints[USBDIAG_EP_##ep_no]);\ 80 80 if (!epm || !epm->present) {\ 81 81 usb_log_error("Failed to map endpoint: " #ep_no ".");\ … … 108 108 } 109 109 110 int usbdiag_dev_create(usb_device_t *dev, usbdiag_dev_t **out_diag_dev )110 int usbdiag_dev_create(usb_device_t *dev, usbdiag_dev_t **out_diag_dev, const usb_endpoint_description_t **endpoints) 111 111 { 112 112 assert(dev); … … 120 120 121 121 int err; 122 if ((err = device_init(diag_dev )))122 if ((err = device_init(diag_dev, endpoints))) 123 123 goto err_init; 124 124 -
uspace/drv/bus/usb/usbdiag/device.h
r09187c6e rb3c39690 38 38 39 39 #include <usb/dev/device.h> 40 #include <usb/dev/driver.h> 40 41 41 42 #define USBDIAG_EP_INTR_IN 1 … … 60 61 } usbdiag_dev_t; 61 62 62 int usbdiag_dev_create(usb_device_t *, usbdiag_dev_t ** );63 int usbdiag_dev_create(usb_device_t *, usbdiag_dev_t **, const usb_endpoint_description_t **); 63 64 void usbdiag_dev_destroy(usbdiag_dev_t *); 64 65 -
uspace/drv/bus/usb/usbdiag/main.c
r09187c6e rb3c39690 45 45 #define NAME "usbdiag" 46 46 47 static const usb_endpoint_description_t *diag_endpoints[]; 48 47 49 static int device_add(usb_device_t *dev) 48 50 { … … 51 53 52 54 usbdiag_dev_t *diag_dev; 53 if ((rc = usbdiag_dev_create(dev, &diag_dev ))) {55 if ((rc = usbdiag_dev_create(dev, &diag_dev, diag_endpoints))) { 54 56 usb_log_error("Failed create device: %s.", str_error(rc)); 55 57 goto err; -
uspace/drv/nic/ar9271/ar9271.c
r09187c6e rb3c39690 665 665 } 666 666 667 static int ar9271_init(ar9271_t *ar9271, usb_device_t *usb_device )667 static int ar9271_init(ar9271_t *ar9271, usb_device_t *usb_device, const usb_endpoint_description_t **endpoints) 668 668 { 669 669 ar9271->starting_up = true; … … 679 679 } 680 680 681 int rc = ath_usb_init(ar9271->ath_device, usb_device );681 int rc = ath_usb_init(ar9271->ath_device, usb_device, endpoints); 682 682 if (rc != EOK) { 683 683 free(ar9271->ath_device); … … 850 850 ar9271->ddf_dev = dev; 851 851 852 rc = ar9271_init(ar9271, usb_device_get(dev) );852 rc = ar9271_init(ar9271, usb_device_get(dev), endpoints); 853 853 if (rc != EOK) { 854 854 free(ar9271); -
uspace/drv/nic/ar9271/ath_usb.c
r09187c6e rb3c39690 59 59 * 60 60 */ 61 int ath_usb_init(ath_t *ath, usb_device_t *usb_device )61 int ath_usb_init(ath_t *ath, usb_device_t *usb_device, const usb_endpoint_description_t **endpoints) 62 62 { 63 63 ath_usb_t *ath_usb = malloc(sizeof(ath_usb_t)); … … 70 70 ath_usb->usb_device = usb_device; 71 71 72 /* TODO: Assign by iterating over pipes. */ 73 ath_usb->output_data_pipe_number = 0; 74 ath_usb->input_data_pipe_number = 1; 75 ath_usb->input_ctrl_pipe_number = 2; 76 ath_usb->output_ctrl_pipe_number = 3; 72 int rc; 73 74 #define _MAP_EP(target, ep_no) do {\ 75 usb_endpoint_mapping_t *epm = usb_device_get_mapped_ep_desc(usb_device, endpoints[ep_no]);\ 76 if (!epm || !epm->present) {\ 77 usb_log_error("Failed to map endpoint: " #ep_no ".");\ 78 rc = ENOENT;\ 79 goto err_ath_usb;\ 80 }\ 81 target = &epm->pipe;\ 82 } while (0); 83 84 _MAP_EP(ath_usb->output_data_pipe, 0); 85 _MAP_EP(ath_usb->input_data_pipe, 1); 86 _MAP_EP(ath_usb->input_ctrl_pipe, 2); 87 _MAP_EP(ath_usb->output_ctrl_pipe, 3); 88 89 #undef _MAP_EP 77 90 78 91 ath->ctrl_response_length = 64; … … 83 96 84 97 return EOK; 98 err_ath_usb: 99 free(ath_usb); 100 return rc; 85 101 } 86 102 … … 98 114 { 99 115 ath_usb_t *ath_usb = (ath_usb_t *) ath->specific_data; 100 usb_pipe_t *pipe = &usb_device_get_mapped_ep( 101 ath_usb->usb_device, ath_usb->output_ctrl_pipe_number)->pipe; 102 103 return usb_pipe_write(pipe, buffer, buffer_size); 116 return usb_pipe_write(ath_usb->output_ctrl_pipe, buffer, buffer_size); 104 117 } 105 118 … … 118 131 { 119 132 ath_usb_t *ath_usb = (ath_usb_t *) ath->specific_data; 120 usb_pipe_t *pipe = &usb_device_get_mapped_ep( 121 ath_usb->usb_device, ath_usb->input_ctrl_pipe_number)->pipe; 122 123 return usb_pipe_read(pipe, buffer, buffer_size, transferred_size); 133 return usb_pipe_read(ath_usb->input_ctrl_pipe, buffer, buffer_size, transferred_size); 124 134 } 125 135 … … 148 158 149 159 ath_usb_t *ath_usb = (ath_usb_t *) ath->specific_data; 150 usb_pipe_t *pipe = &usb_device_get_mapped_ep( 151 ath_usb->usb_device, ath_usb->output_data_pipe_number)->pipe; 152 153 int ret_val = usb_pipe_write(pipe, complete_buffer, 160 int ret_val = usb_pipe_write(ath_usb->output_data_pipe, complete_buffer, 154 161 complete_buffer_size); 155 162 … … 173 180 { 174 181 ath_usb_t *ath_usb = (ath_usb_t *) ath->specific_data; 175 usb_pipe_t *pipe = &usb_device_get_mapped_ep( 176 ath_usb->usb_device, ath_usb->input_data_pipe_number)->pipe; 177 178 return usb_pipe_read(pipe, buffer, buffer_size, transferred_size); 182 return usb_pipe_read(ath_usb->input_data_pipe, buffer, buffer_size, transferred_size); 179 183 } -
uspace/drv/nic/ar9271/ath_usb.h
r09187c6e rb3c39690 45 45 typedef struct { 46 46 /** USB pipes indexes */ 47 int input_ctrl_pipe_number;48 int output_ctrl_pipe_number;49 int input_data_pipe_number;50 int output_data_pipe_number;47 usb_pipe_t *input_ctrl_pipe; 48 usb_pipe_t *output_ctrl_pipe; 49 usb_pipe_t *input_data_pipe; 50 usb_pipe_t *output_data_pipe; 51 51 52 52 /** Pointer to connected USB device. */ … … 59 59 } ath_usb_data_header_t; 60 60 61 extern int ath_usb_init(ath_t *, usb_device_t * );61 extern int ath_usb_init(ath_t *, usb_device_t *, const usb_endpoint_description_t **endpoints); 62 62 63 63 #endif /* ATHEROS_ATH_USB_H */ -
uspace/lib/usbdev/include/usb/dev/device.h
r09187c6e rb3c39690 87 87 usb_endpoint_mapping_t * usb_device_get_mapped_ep_desc(usb_device_t *, 88 88 const usb_endpoint_description_t *); 89 usb_endpoint_mapping_t * usb_device_get_mapped_ep(usb_device_t *,90 usb_endpoint_t);91 89 int usb_device_unmap_ep(usb_endpoint_mapping_t *); 92 90 -
uspace/lib/usbdev/src/devdrv.c
r09187c6e rb3c39690 341 341 } 342 342 343 usb_endpoint_mapping_t * usb_device_get_mapped_ep(344 usb_device_t *usb_dev, usb_endpoint_t ep)345 {346 assert(usb_dev);347 for (unsigned i = 0; i < usb_dev->pipes_count; ++i) {348 if (usb_dev->pipes[i].pipe.desc.endpoint_no == ep)349 return &usb_dev->pipes[i];350 }351 return NULL;352 }353 354 343 int usb_device_unmap_ep(usb_endpoint_mapping_t *epm) 355 344 {
Note:
See TracChangeset
for help on using the changeset viewer.