Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci-hcd/iface.c

    r881c47b rf241b05b  
    106106    usbhc_iface_transfer_out_callback_t callback, void *arg)
    107107{
    108         assert(dev);
    109         uhci_t *hc = dev_to_uhci(dev);
    110         assert(hc);
    111         return uhci_transfer(hc, dev, target, USB_TRANSFER_INTERRUPT, 0, USB_PID_OUT,
    112                 false, data, size, callback, NULL, arg);
     108        size_t max_packet_size = 8;
     109        dev_speed_t speed = FULL_SPEED;
     110
     111        tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_INTERRUPT,
     112            max_packet_size, speed, data, size, NULL, callback, arg);
     113        if (!tracker)
     114                return ENOMEM;
     115        tracker_control_read_data_old(tracker);
     116        return EOK;
    113117}
    114118/*----------------------------------------------------------------------------*/
     
    117121    usbhc_iface_transfer_in_callback_t callback, void *arg)
    118122{
    119         assert(dev);
    120         uhci_t *hc = dev_to_uhci(dev);
    121         assert(hc);
    122         return uhci_transfer(hc, dev, target, USB_TRANSFER_INTERRUPT, 0, USB_PID_IN,
    123                 false, data, size, NULL, callback, arg);
     123        size_t max_packet_size = 8;
     124        dev_speed_t speed = FULL_SPEED;
     125
     126        tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_INTERRUPT,
     127            max_packet_size, speed, data, size, callback, NULL, arg);
     128        if (!tracker)
     129                return ENOMEM;
     130        tracker_control_read_data_old(tracker);
     131        return EOK;
     132}
     133/*----------------------------------------------------------------------------*/
     134static int control_write(device_t *dev, usb_target_t target,
     135    void *setup_data, size_t setup_size, void *data, size_t size,
     136    usbhc_iface_transfer_out_callback_t callback, void *arg)
     137{
     138        size_t max_packet_size = size;
     139        dev_speed_t speed = FULL_SPEED;
     140
     141        tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_CONTROL,
     142            max_packet_size, speed, data, size, NULL, callback, arg);
     143        if (!tracker)
     144                return ENOMEM;
     145        tracker_control_write(tracker, setup_data, setup_size);
     146        return EOK;
     147}
     148/*----------------------------------------------------------------------------*/
     149static int control_read(device_t *dev, usb_target_t target,
     150    void *setup_data, size_t setup_size, void *data, size_t size,
     151    usbhc_iface_transfer_in_callback_t callback, void *arg)
     152{
     153        size_t max_packet_size = size;
     154        dev_speed_t speed = FULL_SPEED;
     155
     156        tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_CONTROL,
     157            max_packet_size, speed, data, size, callback, NULL, arg);
     158        if (!tracker)
     159                return ENOMEM;
     160        tracker_control_read(tracker, setup_data, setup_size);
     161        return EOK;
    124162}
    125163/*----------------------------------------------------------------------------*/
     
    128166    usbhc_iface_transfer_out_callback_t callback, void *arg)
    129167{
    130         assert(dev);
    131         uhci_t *hc = dev_to_uhci(dev);
    132         assert(hc);
    133         return uhci_transfer(hc, dev, target, USB_TRANSFER_CONTROL, 0, USB_PID_SETUP,
    134                 false, data, size, callback, NULL, arg);
     168        tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_CONTROL,
     169            8, FULL_SPEED, data, size, NULL, callback, arg);
     170        if (!tracker)
     171                return ENOMEM;
     172        tracker_control_setup_old(tracker);
     173        return EOK;
    135174}
    136175/*----------------------------------------------------------------------------*/
     
    139178    usbhc_iface_transfer_out_callback_t callback, void *arg)
    140179{
    141         assert(dev);
    142         uhci_t *hc = dev_to_uhci(dev);
    143         assert(hc);
    144         return uhci_transfer(hc, dev, target, USB_TRANSFER_CONTROL, 1, USB_PID_OUT,
    145                 false, data, size, callback, NULL, arg);
     180        tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_CONTROL,
     181            size, FULL_SPEED, data, size, NULL, callback, arg);
     182        if (!tracker)
     183                return ENOMEM;
     184        tracker_control_write_data_old(tracker);
     185        return EOK;
    146186}
    147187/*----------------------------------------------------------------------------*/
     
    149189    usbhc_iface_transfer_in_callback_t callback, void *arg)
    150190{
    151         assert(dev);
    152         uhci_t *hc = dev_to_uhci(dev);
    153         assert(hc);
    154         return uhci_transfer(hc, dev, target, USB_TRANSFER_CONTROL, 0, USB_PID_IN,
    155                 false, NULL, 0, NULL, callback, arg);
     191        tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_CONTROL,
     192            0, FULL_SPEED, NULL, 0, callback, NULL, arg);
     193        if (!tracker)
     194                return ENOMEM;
     195        tracker_control_write_status_old(tracker);
     196        return EOK;
    156197}
    157198/*----------------------------------------------------------------------------*/
     
    160201    usbhc_iface_transfer_out_callback_t callback, void *arg)
    161202{
    162         assert(dev);
    163         uhci_t *hc = dev_to_uhci(dev);
    164         assert(hc);
    165         return uhci_transfer(hc, dev, target, USB_TRANSFER_CONTROL, 0, USB_PID_SETUP,
    166                 false, data, size, callback, NULL, arg);
     203        tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_CONTROL,
     204            8, FULL_SPEED, data, size, NULL, callback, arg);
     205        if (!tracker)
     206                return ENOMEM;
     207        tracker_control_setup_old(tracker);
     208        return EOK;
    167209}
    168210/*----------------------------------------------------------------------------*/
     
    171213    usbhc_iface_transfer_in_callback_t callback, void *arg)
    172214{
    173         assert(dev);
    174         uhci_t *hc = dev_to_uhci(dev);
    175         assert(hc);
    176         return uhci_transfer(hc, dev, target, USB_TRANSFER_CONTROL, 1, USB_PID_IN,
    177                 false, data, size, NULL, callback, arg);
     215        tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_CONTROL,
     216            size, FULL_SPEED, data, size, callback, NULL, arg);
     217        if (!tracker)
     218                return ENOMEM;
     219        tracker_control_read_data_old(tracker);
     220        return EOK;
    178221}
    179222/*----------------------------------------------------------------------------*/
     
    181224    usbhc_iface_transfer_out_callback_t callback, void *arg)
    182225{
    183         assert(dev);
    184         uhci_t *hc = dev_to_uhci(dev);
    185         assert(hc);
    186         return uhci_transfer(hc, dev, target, USB_TRANSFER_CONTROL, 0, USB_PID_OUT,
    187                 false, NULL, 0, callback, NULL, arg);
    188 }
    189 
    190 
     226        tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_CONTROL,
     227            0, FULL_SPEED, NULL, 0, NULL, callback, arg);
     228        if (!tracker)
     229                return ENOMEM;
     230        tracker_control_read_status_old(tracker);
     231        return EOK;
     232}
     233/*----------------------------------------------------------------------------*/
    191234usbhc_iface_t uhci_iface = {
    192235        .tell_address = get_address,
     
    200243        .interrupt_out = interrupt_out,
    201244        .interrupt_in = interrupt_in,
     245
     246        .control_read = control_read,
     247        .control_write = control_write,
    202248
    203249        .control_write_setup = control_write_setup,
Note: See TracChangeset for help on using the changeset viewer.