minix/drivers/usb_storage/urb_helper.h
Wojciech Zajac 78cd341562 Fixed usb_storage to support more USB sticks
More TEST UNIT READY calls, as some sticks seem to require them, while others are indifferent.

Mass storage 'reset recovery' is disabled by default, as it broke communication with some sticks.

Minor fixes.
2014-07-28 17:05:55 +02:00

48 lines
1.4 KiB
C
Executable file

/*
* URB formatting related definitions
*/
#ifndef _URB_HELPER_H_
#define _URB_HELPER_H_
#include <ddekit/usb.h>
#include <ddekit/semaphore.h>
/* Possible values for attach_urb_data's buf_type */
/* Both may be used for single URB */
#define URB_BUF_TYPE_DATA 0 /* attached buffer is data buffer */
#define URB_BUF_TYPE_SETUP 1 /* attached buffer is setup structure */
/* Possible values for blocking_urb_submit's check_len */
/* Use URB_SUBMIT_CHECK_LEN when actual data buffer length returned
* by HCD must match expected length, supplied in attach_urb_data */
#define URB_SUBMIT_CHECK_LEN 0 /* return error on length mismatch */
#define URB_SUBMIT_ALLOW_MISMATCH 1 /* ignore length check */
/* Endpoint configuration related */
#define URB_INVALID_EP (-1) /* default for unset endpoint */
/*---------------------------*
* declared types *
*---------------------------*/
/* URB's endpoint configuration */
typedef struct urb_ep_config {
ddekit_int32_t ep_num;
ddekit_int32_t direction;
ddekit_int32_t type;
ddekit_int32_t max_packet_size;
ddekit_int32_t interval;
}
urb_ep_config;
/*---------------------------*
* declared functions *
*---------------------------*/
void init_urb(struct ddekit_usb_urb *, struct ddekit_usb_dev *,
urb_ep_config *);
void attach_urb_data(struct ddekit_usb_urb *, int, void *, ddekit_uint32_t);
int blocking_urb_submit(struct ddekit_usb_urb *, ddekit_sem_t *, int);
#endif /* !_URB_HELPER_H_ */