Changeset 45c01a1 in mainline for uspace/drv/uhci-hcd/batch.h


Ignore:
Timestamp:
2011-02-12T22:20:22Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
54d9058, bfe0eb5, d15809b4
Parents:
8f5b6561 (diff), 600733e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

hcd reworked, communication is sent in packet batches, improves performance and atomicity

File:
1 moved

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci-hcd/batch.h

    r8f5b6561 r45c01a1  
    3232 * @brief UHCI driver
    3333 */
    34 #ifndef DRV_UHCI_TRACKER_H
    35 #define DRV_UHCI_TRACKER_H
     34#ifndef DRV_UHCI_BATCH_H
     35#define DRV_UHCI_BATCH_H
    3636
    3737#include <adt/list.h>
     
    4141
    4242#include "uhci_struct/transfer_descriptor.h"
     43#include "uhci_struct/queue_head.h"
    4344
    4445typedef enum {
     
    4748} dev_speed_t;
    4849
    49 struct transfer_list;
    50 
    51 typedef struct tracker
     50typedef struct batch
    5251{
    5352        link_t link;
     53        dev_speed_t speed;
    5454        usb_target_t target;
    5555        usb_transfer_type_t transfer_type;
     
    5959        };
    6060        void *arg;
     61        char *transport_buffer;
     62        char *setup_buffer;
     63        size_t setup_size;
    6164        char *buffer;
    62         char *packet;
    6365        size_t buffer_size;
    6466        size_t max_packet_size;
    65         size_t packet_size;
    66         size_t buffer_offset;
    67         dev_speed_t speed;
     67        size_t packets;
     68        size_t transfered_size;
     69        int error;
    6870        device_t *dev;
    69         transfer_descriptor_t *td;
    70         void (*next_step)(struct tracker*);
    71         unsigned toggle:1;
     71        queue_head_t *qh;
     72        transfer_descriptor_t *tds;
     73        void (*next_step)(struct batch*);
     74} batch_t;
    7275
    73         struct transfer_list *scheduled_list;
    74 } tracker_t;
    75 
    76 
    77 tracker_t * tracker_get(device_t *dev, usb_target_t target,
     76batch_t * batch_get(device_t *dev, usb_target_t target,
    7877    usb_transfer_type_t transfer_type, size_t max_packet_size,
    7978    dev_speed_t speed, char *buffer, size_t size,
     79                char *setup_buffer, size_t setup_size,
    8080    usbhc_iface_transfer_in_callback_t func_in,
    8181    usbhc_iface_transfer_out_callback_t func_out, void *arg);
    8282
    83 void tracker_control_write(
    84     tracker_t *instance, char* setup_buffer, size_t setup_size);
     83bool batch_is_complete(batch_t *instance);
    8584
    86 void tracker_control_read(
    87     tracker_t *instance, char* setup_buffer, size_t setup_size);
     85void batch_control_write(batch_t *instance);
    8886
    89 void tracker_interrupt_in(tracker_t *instance);
     87void batch_control_read(batch_t *instance);
    9088
    91 void tracker_interrupt_out(tracker_t *instance);
     89void batch_interrupt_in(batch_t *instance);
     90
     91void batch_interrupt_out(batch_t *instance);
    9292
    9393/* DEPRECATED FUNCTIONS NEEDED BY THE OLD API */
    94 void tracker_control_setup_old(tracker_t *instance);
     94void batch_control_setup_old(batch_t *instance);
    9595
    96 void tracker_control_write_data_old(tracker_t *instance);
     96void batch_control_write_data_old(batch_t *instance);
    9797
    98 void tracker_control_read_data_old(tracker_t *instance);
     98void batch_control_read_data_old(batch_t *instance);
    9999
    100 void tracker_control_write_status_old(tracker_t *instance);
     100void batch_control_write_status_old(batch_t *instance);
    101101
    102 void tracker_control_read_status_old(tracker_t *instance);
     102void batch_control_read_status_old(batch_t *instance);
    103103#endif
    104104/**
Note: See TracChangeset for help on using the changeset viewer.