usb_video.h: build fixes

- Remove duplicate and otherwise unused lendian_bitfield.h
- Adjust listusb jamfile to use lendian_bitfield.h
- Fix various typos in usb_video.h and restore some fields to make
  listusb happy
This commit is contained in:
Adrien Destugues 2019-12-05 18:28:12 +01:00
parent f57d609e9b
commit b819569ef4
3 changed files with 102 additions and 190 deletions
headers
os/drivers/usb
private/graphics/common
src/bin/listusb

@ -17,7 +17,7 @@
enum { // Video Interface Class Code
USB_VIDEO_INTERFACE_VIDEO_CLASS = 0x0e
USB_VIDEO_DEVICE_CLASS = 0x0e
};
@ -68,7 +68,7 @@ enum { // Video Class-Specific VideoStreaming Interface descriptor subtypes
USB_VIDEO_VS_FRAME_MJPEG = 0x07,
USB_VIDEO_VS_FORMAT_MPEG2TS = 0x0a,
USB_VIDEO_VS_FORMAT_DV = 0x0c,
USB_VIDDE_VS_COLORFORMAT = 0x0d,
USB_VIDEO_VS_COLORFORMAT = 0x0d,
USB_VIDEO_VS_FORMAT_FRAME_BASED = 0x10,
USB_VIDEO_VS_FRAME_FRAME_BASED = 0x11,
USB_VIDEO_VS_FORMAT_STREAM_BASED = 0x12,
@ -202,7 +202,7 @@ typedef struct {
following values: 0 = reserved, 1 = VideoControl interface,
2 = VideoStreaming interface. */
struct status_type {
LBITFIELD8_2 (
B_LBITFIELD8_2 (
originator: 4,
reserved: 4
);
@ -286,7 +286,7 @@ typedef struct {
typedef struct {
uint8 header_length;
struct header_info {
LBITFIELD8_8 (
B_LBITFIELD8_8 (
frame_id: 1,
end_of_frame: 1,
presentation_time: 1,
@ -332,7 +332,7 @@ typedef struct {
// a variable size
uint8 control_size;
struct controls {
LBITFIELD8_8 (
B_LBITFIELD8_8 (
vendor_specific0 : 1,
vendor_specific1 : 1,
vendor_specific2 : 1,
@ -352,14 +352,14 @@ typedef struct {
uint8 length; // 7 bytes
uint8 descriptor_type;
struct end_point_address {
LBITFIELD8_3 (
B_LBITFIELD8_3 (
endpoint_number: 4, // Determined by the designer
reserved: 3, // Reserved. Set to zero.
direction: 1 // 0 = OUT, 1 = IN
);
} _end_point_address;
struct attributes {
LBITFIELD8_3 (
B_LBITFIELD8_3 (
transfer_type: 2, // Must be set to 11 (Interrupt)
synchronization_type: 2, // Must be set to 00 (None)
reserved: 4 // Reserved. Must be set to zero
@ -422,14 +422,14 @@ typedef struct {
uint8 num_formats;
uint16 total_length;
struct endpoint_address {
LBITFIELD8_3 (
B_LBITFIELD8_3 (
endpoint_number: 4, // Determined by the designer
reserved: 3, // Set to zero.
direction: 1 // 0 = OUT, 1 = IN
);
} _endpoint_address;
struct info {
LBITFIELD8_2 (
B_LBITFIELD8_2 (
dynamic_format_change_support: 1,
reserved: 7 // Set to zero.
);
@ -443,7 +443,7 @@ typedef struct {
// For four first bits, a bit set to 1 indicates that the named field
// is supported by the Video Probe and Commit Control when
// its format_index is 1:
LBITFIELD8_7 (
B_LBITFIELD8_7 (
key_frame_rate: 1,
p_frame_rate: 1,
comp_quality: 1,
@ -481,7 +481,7 @@ typedef struct {
uint8 num_formats;
uint16 total_length;
struct endpoint_address {
LBITFIELD8_3 (
B_LBITFIELD8_3 (
endpoint_number: 4, // Determined by the designer
reserved: 3, // Set to zero.
direction: 1 // 0 = OUT
@ -493,7 +493,7 @@ typedef struct {
// For four first bits, a bit set to 1 indicates that the named field
// is supported by the Video Probe and Commit Control when its
// format_index is 1:
LBITFIELD8_5 (
B_LBITFIELD8_5 (
key_frame_rate: 1,
p_frame_rate: 1,
comp_quality: 1,
@ -514,80 +514,86 @@ typedef struct {
uint8 source_id;
uint16 max_multiplier;
uint8 control_size;
union {
#if B_HOST_IS_LENDIAN
struct controls {
struct control_a {
LBITFIELD16 (
brightness: 1,
contrast: 1,
hue: 1,
saturation: 1,
sharpness: 1,
gamma: 1,
white_balance_temperature: 1,
white_balance_component: 1,
backlight_compensation: 1,
gain: 1,
power_line_frequency: 1,
hue_auto: 1,
white_balance_temperature_auto: 1,
white_balance_component_auto: 1,
digital_multiplier: 1,
digital_multiplier_limit: 1
);
} _control_a;
struct control_b {
LBITFIELD3 (
analog_video_standard: 1,
analog_video_lock_status: 1,
reserved: 14 // Reserved. Se to zero.
);
} _control_b;
} _controls;
struct {
struct control_a {
B_LBITFIELD16_16 (
brightness: 1,
contrast: 1,
hue: 1,
saturation: 1,
sharpness: 1,
gamma: 1,
white_balance_temperature: 1,
white_balance_component: 1,
backlight_compensation: 1,
gain: 1,
power_line_frequency: 1,
hue_auto: 1,
white_balance_temperature_auto: 1,
white_balance_component_auto: 1,
digital_multiplier: 1,
digital_multiplier_limit: 1
);
} _control_a;
struct control_b {
B_LBITFIELD16_3 (
analog_video_standard: 1,
analog_video_lock_status: 1,
reserved: 14 // Reserved. Se to zero.
);
} _control_b;
} _controls;
#else
struct controls {
struct control_b {
LBITFIELD3 (
analog_video_standard: 1,
analog_video_lock_status: 1,
reserved: 14 // Reserved. Se to zero.
);
} _control_b;
struct control_a {
LBITFIELD16 (
brightness: 1,
contrast: 1,
hue: 1,
saturation: 1,
sharpness: 1,
gamma: 1,
white_balance_temperature: 1,
white_balance_component: 1,
backlight_compensation: 1,
gain: 1,
power_line_frequency: 1,
hue_auto: 1,
white_balance_temperature_auto: 1,
white_balance_component_auto: 1,
digital_multiplier: 1,
digital_multiplier_limit: 1
);
} _control_a;
} _controls;
struct {
struct control_b {
B_LBITFIELD16_3 (
analog_video_standard: 1,
analog_video_lock_status: 1,
reserved: 14 // Reserved. Se to zero.
);
} _control_b;
struct control_a {
B_LBITFIELD16_16 (
brightness: 1,
contrast: 1,
hue: 1,
saturation: 1,
sharpness: 1,
gamma: 1,
white_balance_temperature: 1,
white_balance_component: 1,
backlight_compensation: 1,
gain: 1,
power_line_frequency: 1,
hue_auto: 1,
white_balance_temperature_auto: 1,
white_balance_component_auto: 1,
digital_multiplier: 1,
digital_multiplier_limit: 1
);
} _control_a;
} _controls;
#endif
uint8_t controls[4];
};
uint8 processing;
struct video_standards {
LBITFIELD8_8 (
none: 1,
ntsc_525_60: 1,
pal_625_50: 1,
secam_625_50: 1,
ntsc_625_50: 1,
pal_525_60: 1,
reserved6: 1, // Reserved. Set to zero.
reserved7: 1 // Reserved. Set to zero.
);
} _video_standards;
union {
struct video_standards {
B_LBITFIELD8_8 (
none: 1,
ntsc_525_60: 1,
pal_625_50: 1,
secam_625_50: 1,
ntsc_625_50: 1,
pal_525_60: 1,
reserved6: 1, // Reserved. Set to zero.
reserved7: 1 // Reserved. Set to zero.
);
} _video_standards;
uint8_t video_standards;
};
} _PACKED usb_video_processing_unit_descriptor;
@ -606,7 +612,7 @@ typedef struct {
#if B_HOST_IS_LENDIAN
struct controls {
struct control_a {
LBITFIELD16 (
B_LBITFIELD16_16 (
scanning_mode: 1,
auto_exposure_mode: 1,
auto_exposure_priority: 1,
@ -626,7 +632,7 @@ typedef struct {
);
} _control_a;
struct control_b {
LBITFIELD4 (
B_LBITFIELD16_4 (
reserved16: 1,
focus_auto: 1,
privacy: 1,
@ -638,7 +644,7 @@ typedef struct {
#else
struct controls {
struct control_b {
LBITFIELD4 (
B_LBITFIELD16_4 (
reserved16: 1,
focus_auto: 1,
privacy: 1,
@ -647,7 +653,7 @@ typedef struct {
);
} _contorl_b;
struct control_a {
LBITFIELD16 (
B_LBITFIELD16_16 (
scanning_mode: 1,
auto_exposure_mode: 1,
auto_exposure_priority: 1,
@ -692,13 +698,13 @@ typedef struct {
} continuous;
uint32 discrete_frame_intervals[0];
};
} _PACKED;
} _PACKED usb_video_frame_descriptor;
typedef struct {
uint8 length; // 34 bytes
struct hint {
LBITFIELD5 (
B_LBITFIELD16_5 (
frame_interval: 1,
key_frame_rate: 1,
p_frame_rate: 1,
@ -718,7 +724,7 @@ typedef struct {
uint32 max_payload_transfer_size;
uint32 clock_frequency;
struct framing_info {
LBITFIELD8_3 (
B_LBITFIELD8_3 (
is_frame_id_required: 1,
is_end_of_frame_present: 1,
reserved: 6
@ -758,14 +764,14 @@ typedef struct {
typedef struct {
uint8 length; // 7 bytes
struct endpoint_address {
LBITFIELD8_3 (
B_LBITFIELD8_3 (
endpoint_number: 4, // Determined by the designer
reserved: 3,
direction: 1 // Set to 1 = IN endpoint)
);
} _endpoint_address;
struct attributes {
LBITFIELD8_2 (
B_LBITFIELD8_2 (
transfer_type: 2, // Set to 10 = Bulk
reserved: 6
);
@ -789,14 +795,14 @@ typedef struct {
uint8 length; // 7 bytes
uint8 descriptor_type;
struct endpoint_address {
LBITFIELD8_3 (
B_LBITFIELD8_3 (
endpoint_number: 4, // Determined by the designer
reserved: 3, // Reset to zero.
direction: 1 // 0 = OUT endpoint, 1 = IN endpoint
);
} _endpoint_address;
struct attributes {
LBITFIELD8_3 (
B_LBITFIELD8_3 (
transfer_type: 2, // 01 = isochronous
synchronization_type: 2, // 01 = asynchronous
reserved: 4
@ -811,14 +817,14 @@ typedef struct {
uint8 length; // 7 bytes
uint8 descriptor_type;
struct endpoint_address {
LBITFIELD8_3 (
B_LBITFIELD8_3 (
endpoint_number: 4, // Determined by the designer
reserved: 3, // Reset to zero.
direction: 1 // 0 = OUT endpoint
);
} _endpoint_address;
struct attributes {
LBITFIELD8_2 (
B_LBITFIELD8_2 (
transfer_type: 2, // Set to 10 = Bulk
reserved: 6
);

@ -1,95 +0,0 @@
#ifndef LENDIAN_BITFIELD_H
#define LENDIAN_BITFIELD_H
#include <ByteOrder.h>
#if B_HOST_IS_BENDIAN
#define LBITFIELD8_2(b1,b2) uint8 b2,b1
#define LBITFIELD8_3(b1,b2,b3) uint8 b3,b2,b1
#define LBITFIELD8_4(b1,b2,b3,b4) uint8 b4,b3,b2,b1
#define LBITFIELD8_5(b1,b2,b3,b4,b5) uint8 b5,b4,b3,b2,b1
#define LBITFIELD8_6(b1,b2,b3,b4,b5,b6) uint8 b6,b5,b4,b3,b2,b1
#define LBITFIELD8_7(b1,b2,b3,b4,b5,b6,b7) uint8 b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD8_8(b1,b2,b3,b4,b5,b6,b7,b8) uint8 b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD2(b1,b2) uint16 b2,b1
#define LBITFIELD3(b1,b2,b3) uint16 b3,b2,b1
#define LBITFIELD4(b1,b2,b3,b4) uint16 b4,b3,b2,b1
#define LBITFIELD5(b1,b2,b3,b4,b5) uint16 b5,b4,b3,b2,b1
#define LBITFIELD6(b1,b2,b3,b4,b5,b6) uint16 b6,b5,b4,b3,b2,b1
#define LBITFIELD7(b1,b2,b3,b4,b5,b6,b7) uint16 b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD8(b1,b2,b3,b4,b5,b6,b7,b8) uint16 b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD9(b1,b2,b3,b4,b5,b6,b7,b8,b9) uint16 b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10) uint16 b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11) uint16 b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12) uint16 b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13) uint16 b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14) uint16 b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15) uint16 b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16) uint16 b16,b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD32_2(b1,b2) uint32 b2,b1
#define LBITFIELD32_3(b1,b2,b3) uint32 b3,b2,b1
#define LBITFIELD32_4(b1,b2,b3,b4) uint32 b4,b3,b2,b1
#define LBITFIELD32_5(b1,b2,b3,b4,b5) uint32 b5,b4,b3,b2,b1
#define LBITFIELD32_6(b1,b2,b3,b4,b5,b6) uint32 b6,b5,b4,b3,b2,b1
#define LBITFIELD32_7(b1,b2,b3,b4,b5,b6,b7) uint32 b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD32_8(b1,b2,b3,b4,b5,b6,b7,b8) uint32 b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD32_9(b1,b2,b3,b4,b5,b6,b7,b8,b9) uint32 b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD32_10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10) uint32 b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD32_11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11) uint32 b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD32_12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12) uint32 b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD32_13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13) uint32 b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD32_14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14) uint32 b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD32_15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15) uint32 b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#define LBITFIELD32_16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16) uint32 b16,b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
#elif B_HOST_IS_LENDIAN
#define LBITFIELD8_2(b1,b2) uint8 b1,b2
#define LBITFIELD8_3(b1,b2,b3) uint8 b1,b2,b3
#define LBITFIELD8_4(b1,b2,b3,b4) uint8 b1,b2,b3,b4
#define LBITFIELD8_5(b1,b2,b3,b4,b5) uint8 b1,b2,b3,b4,b5
#define LBITFIELD8_6(b1,b2,b3,b4,b5,b6) uint8 b1,b2,b3,b4,b5,b6
#define LBITFIELD8_7(b1,b2,b3,b4,b5,b6,b7) uint8 b1,b2,b3,b4,b5,b6,b7
#define LBITFIELD8_8(b1,b2,b3,b4,b5,b6,b7,b8) uint8 b1,b2,b3,b4,b5,b6,b7,b8
#define LBITFIELD2(b1,b2) uint16 b1,b2
#define LBITFIELD3(b1,b2,b3) uint16 b1,b2,b3
#define LBITFIELD4(b1,b2,b3,b4) uint16 b1,b2,b3,b4
#define LBITFIELD5(b1,b2,b3,b4,b5) uint16 b1,b2,b3,b4,b5
#define LBITFIELD6(b1,b2,b3,b4,b5,b6) uint16 b1,b2,b3,b4,b5,b6
#define LBITFIELD7(b1,b2,b3,b4,b5,b6,b7) uint16 b1,b2,b3,b4,b5,b6,b7
#define LBITFIELD8(b1,b2,b3,b4,b5,b6,b7,b8) uint16 b1,b2,b3,b4,b5,b6,b7,b8
#define LBITFIELD9(b1,b2,b3,b4,b5,b6,b7,b8,b9) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9
#define LBITFIELD10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10
#define LBITFIELD11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11
#define LBITFIELD12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12
#define LBITFIELD13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13
#define LBITFIELD14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14
#define LBITFIELD15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15
#define LBITFIELD16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16) uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16
#define LBITFIELD32_2(b1,b2) uint32 b1,b2
#define LBITFIELD32_3(b1,b2,b3) uint32 b1,b2,b3
#define LBITFIELD32_4(b1,b2,b3,b4) uint32 b1,b2,b3,b4
#define LBITFIELD32_5(b1,b2,b3,b4,b5) uint32 b1,b2,b3,b4,b5
#define LBITFIELD32_6(b1,b2,b3,b4,b5,b6) uint32 b1,b2,b3,b4,b5,b6
#define LBITFIELD32_7(b1,b2,b3,b4,b5,b6,b7) uint32 b1,b2,b3,b4,b5,b6,b7
#define LBITFIELD32_8(b1,b2,b3,b4,b5,b6,b7,b8) uint32 b1,b2,b3,b4,b5,b6,b7,b8
#define LBITFIELD32_9(b1,b2,b3,b4,b5,b6,b7,b8,b9) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9
#define LBITFIELD32_10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10
#define LBITFIELD32_11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11
#define LBITFIELD32_12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12
#define LBITFIELD32_13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13
#define LBITFIELD32_14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14
#define LBITFIELD32_15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15
#define LBITFIELD32_16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16) uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16
#else
#error "Unknown host endianness"
#endif
#endif /* LENDIAN_BITFIELD_H */

@ -1,6 +1,7 @@
SubDir HAIKU_TOP src bin listusb ;
UsePrivateHeaders shared usb ;
UsePrivateHeaders drivers ;
UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers usb ] ;
BinCommand listusb :