usb: remove COMPAT_32BIT ifdefs
Now that we have proper 32-bit compat support, remove COMPAT_32BIT ifdefs to allow 32-bit code to use the 64-bit layout of USB ioctl structs and struct usb_fs_endpoint. This includes the removal of redundant alignment directives that had no effect in practice. Reviewed by: hselasky, jrtc27 (prior version)
This commit is contained in:
parent
8010f4ad21
commit
ea972feea2
@ -35,23 +35,9 @@
|
|||||||
#define HIDRAW_BUFFER_SIZE 64 /* number of input reports buffered */
|
#define HIDRAW_BUFFER_SIZE 64 /* number of input reports buffered */
|
||||||
#define HID_MAX_DESCRIPTOR_SIZE 4096 /* artificial limit taken from Linux */
|
#define HID_MAX_DESCRIPTOR_SIZE 4096 /* artificial limit taken from Linux */
|
||||||
|
|
||||||
/*
|
|
||||||
* Align IOCTL structures to hide differences when running 32-bit
|
|
||||||
* programs under 64-bit kernels:
|
|
||||||
*/
|
|
||||||
#ifdef COMPAT_32BIT
|
|
||||||
#define HIDRAW_IOCTL_STRUCT_ALIGN(n) __aligned(n)
|
|
||||||
#else
|
|
||||||
#define HIDRAW_IOCTL_STRUCT_ALIGN(n)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Compatible with usb_gen_descriptor structure */
|
/* Compatible with usb_gen_descriptor structure */
|
||||||
struct hidraw_gen_descriptor {
|
struct hidraw_gen_descriptor {
|
||||||
#ifdef COMPAT_32BIT
|
|
||||||
uint64_t hgd_data;
|
|
||||||
#else
|
|
||||||
void *hgd_data;
|
void *hgd_data;
|
||||||
#endif
|
|
||||||
uint16_t hgd_lang_id;
|
uint16_t hgd_lang_id;
|
||||||
uint16_t hgd_maxlen;
|
uint16_t hgd_maxlen;
|
||||||
uint16_t hgd_actlen;
|
uint16_t hgd_actlen;
|
||||||
@ -63,18 +49,18 @@ struct hidraw_gen_descriptor {
|
|||||||
uint8_t hgd_endpt_index;
|
uint8_t hgd_endpt_index;
|
||||||
uint8_t hgd_report_type;
|
uint8_t hgd_report_type;
|
||||||
uint8_t reserved[8];
|
uint8_t reserved[8];
|
||||||
} HIDRAW_IOCTL_STRUCT_ALIGN(8);
|
};
|
||||||
|
|
||||||
struct hidraw_report_descriptor {
|
struct hidraw_report_descriptor {
|
||||||
uint32_t size;
|
uint32_t size;
|
||||||
uint8_t value[HID_MAX_DESCRIPTOR_SIZE];
|
uint8_t value[HID_MAX_DESCRIPTOR_SIZE];
|
||||||
} HIDRAW_IOCTL_STRUCT_ALIGN(4);
|
};
|
||||||
|
|
||||||
struct hidraw_devinfo {
|
struct hidraw_devinfo {
|
||||||
uint32_t bustype;
|
uint32_t bustype;
|
||||||
int16_t vendor;
|
int16_t vendor;
|
||||||
int16_t product;
|
int16_t product;
|
||||||
} HIDRAW_IOCTL_STRUCT_ALIGN(4);
|
};
|
||||||
|
|
||||||
/* FreeBSD uhid(4)-compatible ioctl interface */
|
/* FreeBSD uhid(4)-compatible ioctl interface */
|
||||||
#define HIDRAW_GET_REPORT_DESC _IOWR('U', 21, struct hidraw_gen_descriptor)
|
#define HIDRAW_GET_REPORT_DESC _IOWR('U', 21, struct hidraw_gen_descriptor)
|
||||||
|
@ -46,16 +46,6 @@
|
|||||||
#define USB_GENERIC_NAME "ugen"
|
#define USB_GENERIC_NAME "ugen"
|
||||||
#define USB_TEMPLATE_SYSCTL "hw.usb.template" /* integer type */
|
#define USB_TEMPLATE_SYSCTL "hw.usb.template" /* integer type */
|
||||||
|
|
||||||
/*
|
|
||||||
* Align IOCTL structures to hide differences when running 32-bit
|
|
||||||
* programs under 64-bit kernels:
|
|
||||||
*/
|
|
||||||
#ifdef COMPAT_32BIT
|
|
||||||
#define USB_IOCTL_STRUCT_ALIGN(n) __aligned(n)
|
|
||||||
#else
|
|
||||||
#define USB_IOCTL_STRUCT_ALIGN(n)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Definition of valid template sysctl values */
|
/* Definition of valid template sysctl values */
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -75,38 +65,26 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct usb_read_dir {
|
struct usb_read_dir {
|
||||||
#ifdef COMPAT_32BIT
|
|
||||||
uint64_t urd_data;
|
|
||||||
#else
|
|
||||||
void *urd_data;
|
void *urd_data;
|
||||||
#endif
|
|
||||||
uint32_t urd_startentry;
|
uint32_t urd_startentry;
|
||||||
uint32_t urd_maxlen;
|
uint32_t urd_maxlen;
|
||||||
} USB_IOCTL_STRUCT_ALIGN(8);
|
};
|
||||||
|
|
||||||
struct usb_ctl_request {
|
struct usb_ctl_request {
|
||||||
#ifdef COMPAT_32BIT
|
|
||||||
uint64_t ucr_data;
|
|
||||||
#else
|
|
||||||
void *ucr_data;
|
void *ucr_data;
|
||||||
#endif
|
|
||||||
uint16_t ucr_flags;
|
uint16_t ucr_flags;
|
||||||
uint16_t ucr_actlen; /* actual length transferred */
|
uint16_t ucr_actlen; /* actual length transferred */
|
||||||
uint8_t ucr_addr; /* zero - currently not used */
|
uint8_t ucr_addr; /* zero - currently not used */
|
||||||
struct usb_device_request ucr_request;
|
struct usb_device_request ucr_request;
|
||||||
} USB_IOCTL_STRUCT_ALIGN(8);
|
};
|
||||||
|
|
||||||
struct usb_alt_interface {
|
struct usb_alt_interface {
|
||||||
uint8_t uai_interface_index;
|
uint8_t uai_interface_index;
|
||||||
uint8_t uai_alt_index;
|
uint8_t uai_alt_index;
|
||||||
} USB_IOCTL_STRUCT_ALIGN(1);
|
};
|
||||||
|
|
||||||
struct usb_gen_descriptor {
|
struct usb_gen_descriptor {
|
||||||
#ifdef COMPAT_32BIT
|
|
||||||
uint64_t ugd_data;
|
|
||||||
#else
|
|
||||||
void *ugd_data;
|
void *ugd_data;
|
||||||
#endif
|
|
||||||
uint16_t ugd_lang_id;
|
uint16_t ugd_lang_id;
|
||||||
uint16_t ugd_maxlen;
|
uint16_t ugd_maxlen;
|
||||||
uint16_t ugd_actlen;
|
uint16_t ugd_actlen;
|
||||||
@ -118,7 +96,7 @@ struct usb_gen_descriptor {
|
|||||||
uint8_t ugd_endpt_index;
|
uint8_t ugd_endpt_index;
|
||||||
uint8_t ugd_report_type;
|
uint8_t ugd_report_type;
|
||||||
uint8_t reserved[8];
|
uint8_t reserved[8];
|
||||||
} USB_IOCTL_STRUCT_ALIGN(8);
|
};
|
||||||
|
|
||||||
struct usb_device_info {
|
struct usb_device_info {
|
||||||
uint16_t udi_productNo;
|
uint16_t udi_productNo;
|
||||||
@ -147,7 +125,7 @@ struct usb_device_info {
|
|||||||
char udi_vendor[128];
|
char udi_vendor[128];
|
||||||
char udi_serial[64];
|
char udi_serial[64];
|
||||||
char udi_release[8];
|
char udi_release[8];
|
||||||
} USB_IOCTL_STRUCT_ALIGN(2);
|
};
|
||||||
|
|
||||||
#define USB_DEVICE_PORT_PATH_MAX 32
|
#define USB_DEVICE_PORT_PATH_MAX 32
|
||||||
|
|
||||||
@ -156,24 +134,24 @@ struct usb_device_port_path {
|
|||||||
uint8_t udp_index; /* which device index */
|
uint8_t udp_index; /* which device index */
|
||||||
uint8_t udp_port_level; /* how many levels: 0, 1, 2 ... */
|
uint8_t udp_port_level; /* how many levels: 0, 1, 2 ... */
|
||||||
uint8_t udp_port_no[USB_DEVICE_PORT_PATH_MAX];
|
uint8_t udp_port_no[USB_DEVICE_PORT_PATH_MAX];
|
||||||
} USB_IOCTL_STRUCT_ALIGN(1);
|
};
|
||||||
|
|
||||||
struct usb_device_stats {
|
struct usb_device_stats {
|
||||||
uint32_t uds_requests_ok[4]; /* Indexed by transfer type UE_XXX */
|
uint32_t uds_requests_ok[4]; /* Indexed by transfer type UE_XXX */
|
||||||
uint32_t uds_requests_fail[4]; /* Indexed by transfer type UE_XXX */
|
uint32_t uds_requests_fail[4]; /* Indexed by transfer type UE_XXX */
|
||||||
} USB_IOCTL_STRUCT_ALIGN(4);
|
};
|
||||||
|
|
||||||
struct usb_fs_start {
|
struct usb_fs_start {
|
||||||
uint8_t ep_index;
|
uint8_t ep_index;
|
||||||
} USB_IOCTL_STRUCT_ALIGN(1);
|
};
|
||||||
|
|
||||||
struct usb_fs_stop {
|
struct usb_fs_stop {
|
||||||
uint8_t ep_index;
|
uint8_t ep_index;
|
||||||
} USB_IOCTL_STRUCT_ALIGN(1);
|
};
|
||||||
|
|
||||||
struct usb_fs_complete {
|
struct usb_fs_complete {
|
||||||
uint8_t ep_index;
|
uint8_t ep_index;
|
||||||
} USB_IOCTL_STRUCT_ALIGN(1);
|
};
|
||||||
|
|
||||||
/* This structure is used for all endpoint types */
|
/* This structure is used for all endpoint types */
|
||||||
struct usb_fs_endpoint {
|
struct usb_fs_endpoint {
|
||||||
@ -181,14 +159,9 @@ struct usb_fs_endpoint {
|
|||||||
* NOTE: isochronous USB transfer only use one buffer, but can have
|
* NOTE: isochronous USB transfer only use one buffer, but can have
|
||||||
* multiple frame lengths !
|
* multiple frame lengths !
|
||||||
*/
|
*/
|
||||||
#ifdef COMPAT_32BIT
|
|
||||||
uint64_t ppBuffer;
|
|
||||||
uint64_t pLength;
|
|
||||||
#else
|
|
||||||
void **ppBuffer; /* pointer to userland buffers */
|
void **ppBuffer; /* pointer to userland buffers */
|
||||||
uint32_t *pLength; /* pointer to frame lengths, updated
|
uint32_t *pLength; /* pointer to frame lengths, updated
|
||||||
* to actual length */
|
* to actual length */
|
||||||
#endif
|
|
||||||
uint32_t nFrames; /* number of frames */
|
uint32_t nFrames; /* number of frames */
|
||||||
uint32_t aFrames; /* actual number of frames */
|
uint32_t aFrames; /* actual number of frames */
|
||||||
uint16_t flags;
|
uint16_t flags;
|
||||||
@ -206,22 +179,18 @@ struct usb_fs_endpoint {
|
|||||||
/* timeout value for no timeout */
|
/* timeout value for no timeout */
|
||||||
#define USB_FS_TIMEOUT_NONE 0
|
#define USB_FS_TIMEOUT_NONE 0
|
||||||
int status; /* see USB_ERR_XXX */
|
int status; /* see USB_ERR_XXX */
|
||||||
} USB_IOCTL_STRUCT_ALIGN(8);
|
};
|
||||||
|
|
||||||
struct usb_fs_init {
|
struct usb_fs_init {
|
||||||
/* userland pointer to endpoints structure */
|
/* userland pointer to endpoints structure */
|
||||||
#ifdef COMPAT_32BIT
|
|
||||||
uint64_t pEndpoints;
|
|
||||||
#else
|
|
||||||
struct usb_fs_endpoint *pEndpoints;
|
struct usb_fs_endpoint *pEndpoints;
|
||||||
#endif
|
|
||||||
/* maximum number of endpoints */
|
/* maximum number of endpoints */
|
||||||
uint8_t ep_index_max;
|
uint8_t ep_index_max;
|
||||||
} USB_IOCTL_STRUCT_ALIGN(8);
|
};
|
||||||
|
|
||||||
struct usb_fs_uninit {
|
struct usb_fs_uninit {
|
||||||
uint8_t dummy; /* zero */
|
uint8_t dummy; /* zero */
|
||||||
} USB_IOCTL_STRUCT_ALIGN(1);
|
};
|
||||||
|
|
||||||
struct usb_fs_open {
|
struct usb_fs_open {
|
||||||
#define USB_FS_MAX_BUFSIZE (1 << 25) /* 32 MBytes */
|
#define USB_FS_MAX_BUFSIZE (1 << 25) /* 32 MBytes */
|
||||||
@ -233,20 +202,20 @@ struct usb_fs_open {
|
|||||||
uint8_t dev_index; /* currently unused */
|
uint8_t dev_index; /* currently unused */
|
||||||
uint8_t ep_index;
|
uint8_t ep_index;
|
||||||
uint8_t ep_no; /* bEndpointNumber */
|
uint8_t ep_no; /* bEndpointNumber */
|
||||||
} USB_IOCTL_STRUCT_ALIGN(4);
|
};
|
||||||
|
|
||||||
struct usb_fs_open_stream {
|
struct usb_fs_open_stream {
|
||||||
struct usb_fs_open fs_open;
|
struct usb_fs_open fs_open;
|
||||||
uint16_t stream_id; /* stream ID */
|
uint16_t stream_id; /* stream ID */
|
||||||
} USB_IOCTL_STRUCT_ALIGN(4);
|
};
|
||||||
|
|
||||||
struct usb_fs_close {
|
struct usb_fs_close {
|
||||||
uint8_t ep_index;
|
uint8_t ep_index;
|
||||||
} USB_IOCTL_STRUCT_ALIGN(1);
|
};
|
||||||
|
|
||||||
struct usb_fs_clear_stall_sync {
|
struct usb_fs_clear_stall_sync {
|
||||||
uint8_t ep_index;
|
uint8_t ep_index;
|
||||||
} USB_IOCTL_STRUCT_ALIGN(1);
|
};
|
||||||
|
|
||||||
struct usb_gen_quirk {
|
struct usb_gen_quirk {
|
||||||
uint16_t index; /* Quirk Index */
|
uint16_t index; /* Quirk Index */
|
||||||
@ -260,7 +229,7 @@ struct usb_gen_quirk {
|
|||||||
* UQ_XXX in "usb_quirk.h".
|
* UQ_XXX in "usb_quirk.h".
|
||||||
*/
|
*/
|
||||||
char quirkname[64 - 14];
|
char quirkname[64 - 14];
|
||||||
} USB_IOCTL_STRUCT_ALIGN(2);
|
};
|
||||||
|
|
||||||
/* USB controller */
|
/* USB controller */
|
||||||
#define USB_REQUEST _IOWR('U', 1, struct usb_ctl_request)
|
#define USB_REQUEST _IOWR('U', 1, struct usb_ctl_request)
|
||||||
|
Loading…
Reference in New Issue
Block a user