Skip to content

Commit 6583ae5

Browse files
committed
uefi-raw: Move common USB structures
Move USB structures used in multiple protocol interfaces to the general usb module.
1 parent cf4f328 commit 6583ae5

File tree

2 files changed

+94
-85
lines changed

2 files changed

+94
-85
lines changed

uefi-raw/src/protocol/usb/io.rs

Lines changed: 4 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -4,91 +4,10 @@ use core::ffi;
44

55
use crate::{guid, Boolean, Char16, Guid, Status};
66

7-
newtype_enum! {
8-
pub enum DataDirection: i32 => {
9-
DATA_IN = 0,
10-
DATA_OUT = 1,
11-
NO_DATA = 2,
12-
}
13-
}
14-
15-
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
16-
#[repr(C)]
17-
pub struct DeviceRequest {
18-
pub request_type: u8,
19-
pub request: u8,
20-
pub value: u16,
21-
pub index: u16,
22-
pub length: u16,
23-
}
24-
25-
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
26-
#[repr(transparent)]
27-
pub struct UsbTransferStatus(pub u32);
28-
29-
pub type AsyncUsbTransferCallback = unsafe extern "efiapi" fn(
30-
data: *mut ffi::c_void,
31-
data_length: usize,
32-
context: *mut ffi::c_void,
33-
status: UsbTransferStatus,
34-
) -> Status;
35-
36-
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
37-
#[repr(C)]
38-
pub struct DeviceDescriptor {
39-
pub length: u8,
40-
pub descriptor_type: u8,
41-
pub bcd_usb: u16,
42-
pub device_class: u8,
43-
pub device_subclass: u8,
44-
pub device_protocol: u8,
45-
pub max_packet_size: u8,
46-
pub id_vendor: u16,
47-
pub id_product: u16,
48-
pub bcd_device: u16,
49-
pub str_manufacturer: u8,
50-
pub str_product: u8,
51-
pub str_serial_number: u8,
52-
pub num_configurations: u8,
53-
}
54-
55-
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
56-
#[repr(C)]
57-
pub struct ConfigDescriptor {
58-
pub length: u8,
59-
pub descriptor_type: u8,
60-
pub total_length: u16,
61-
pub num_interfaces: u8,
62-
pub configuration_value: u8,
63-
pub configuration: u8,
64-
pub attributes: u8,
65-
pub max_power: u8,
66-
}
67-
68-
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
69-
#[repr(C)]
70-
pub struct InterfaceDescriptor {
71-
pub length: u8,
72-
pub descriptor_type: u8,
73-
pub interface_number: u8,
74-
pub alternate_setting: u8,
75-
pub num_endpoints: u8,
76-
pub interface_class: u8,
77-
pub interface_subclass: u8,
78-
pub interface_protocol: u8,
79-
pub interface: u8,
80-
}
81-
82-
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
83-
#[repr(C)]
84-
pub struct EndpointDescriptor {
85-
pub length: u8,
86-
pub descriptor_type: u8,
87-
pub endpoint_address: u8,
88-
pub attributes: u8,
89-
pub max_packet_size: u16,
90-
pub interval: u8,
91-
}
7+
use super::{
8+
AsyncUsbTransferCallback, ConfigDescriptor, DataDirection, DeviceDescriptor, DeviceRequest,
9+
EndpointDescriptor, InterfaceDescriptor, UsbTransferStatus,
10+
};
9211

9312
#[derive(Debug)]
9413
#[repr(C)]

uefi-raw/src/protocol/usb/mod.rs

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,93 @@
11
// SPDX-License-Identifier: MIT OR Apache-2.0
22

3+
use core::ffi;
4+
5+
use crate::Status;
6+
37
pub mod io;
8+
9+
newtype_enum! {
10+
pub enum DataDirection: i32 => {
11+
DATA_IN = 0,
12+
DATA_OUT = 1,
13+
NO_DATA = 2,
14+
}
15+
}
16+
17+
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
18+
#[repr(C)]
19+
pub struct DeviceRequest {
20+
pub request_type: u8,
21+
pub request: u8,
22+
pub value: u16,
23+
pub index: u16,
24+
pub length: u16,
25+
}
26+
27+
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
28+
#[repr(transparent)]
29+
pub struct UsbTransferStatus(pub u32);
30+
31+
pub type AsyncUsbTransferCallback = unsafe extern "efiapi" fn(
32+
data: *mut ffi::c_void,
33+
data_length: usize,
34+
context: *mut ffi::c_void,
35+
status: UsbTransferStatus,
36+
) -> Status;
37+
38+
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
39+
#[repr(C)]
40+
pub struct DeviceDescriptor {
41+
pub length: u8,
42+
pub descriptor_type: u8,
43+
pub bcd_usb: u16,
44+
pub device_class: u8,
45+
pub device_subclass: u8,
46+
pub device_protocol: u8,
47+
pub max_packet_size: u8,
48+
pub id_vendor: u16,
49+
pub id_product: u16,
50+
pub bcd_device: u16,
51+
pub str_manufacturer: u8,
52+
pub str_product: u8,
53+
pub str_serial_number: u8,
54+
pub num_configurations: u8,
55+
}
56+
57+
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
58+
#[repr(C)]
59+
pub struct ConfigDescriptor {
60+
pub length: u8,
61+
pub descriptor_type: u8,
62+
pub total_length: u16,
63+
pub num_interfaces: u8,
64+
pub configuration_value: u8,
65+
pub configuration: u8,
66+
pub attributes: u8,
67+
pub max_power: u8,
68+
}
69+
70+
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
71+
#[repr(C)]
72+
pub struct InterfaceDescriptor {
73+
pub length: u8,
74+
pub descriptor_type: u8,
75+
pub interface_number: u8,
76+
pub alternate_setting: u8,
77+
pub num_endpoints: u8,
78+
pub interface_class: u8,
79+
pub interface_subclass: u8,
80+
pub interface_protocol: u8,
81+
pub interface: u8,
82+
}
83+
84+
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
85+
#[repr(C)]
86+
pub struct EndpointDescriptor {
87+
pub length: u8,
88+
pub descriptor_type: u8,
89+
pub endpoint_address: u8,
90+
pub attributes: u8,
91+
pub max_packet_size: u16,
92+
pub interval: u8,
93+
}

0 commit comments

Comments
 (0)