xref: /aosp_15_r20/external/crosvm/acpi_tables/src/facs.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2021 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker 
5*bb4ee6a4SAndroid Build Coastguard Worker use zerocopy::AsBytes;
6*bb4ee6a4SAndroid Build Coastguard Worker use zerocopy::FromBytes;
7*bb4ee6a4SAndroid Build Coastguard Worker use zerocopy::FromZeroes;
8*bb4ee6a4SAndroid Build Coastguard Worker 
9*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C, packed)]
10*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Clone, Copy, Default, FromZeroes, FromBytes, AsBytes)]
11*bb4ee6a4SAndroid Build Coastguard Worker pub struct FACS {
12*bb4ee6a4SAndroid Build Coastguard Worker     pub signature: [u8; 4],
13*bb4ee6a4SAndroid Build Coastguard Worker     pub length: u32,
14*bb4ee6a4SAndroid Build Coastguard Worker     pub hardware_signature: u32,
15*bb4ee6a4SAndroid Build Coastguard Worker     pub waking: u32,
16*bb4ee6a4SAndroid Build Coastguard Worker     pub lock: u32,
17*bb4ee6a4SAndroid Build Coastguard Worker     pub flags: u32,
18*bb4ee6a4SAndroid Build Coastguard Worker     pub x_waking: u64,
19*bb4ee6a4SAndroid Build Coastguard Worker     pub version: u8,
20*bb4ee6a4SAndroid Build Coastguard Worker     pub _reserved1: [u8; 3],
21*bb4ee6a4SAndroid Build Coastguard Worker     pub ospm_flags: u32,
22*bb4ee6a4SAndroid Build Coastguard Worker     pub _reserved2: [u8; 24],
23*bb4ee6a4SAndroid Build Coastguard Worker }
24*bb4ee6a4SAndroid Build Coastguard Worker 
25*bb4ee6a4SAndroid Build Coastguard Worker impl FACS {
new() -> Self26*bb4ee6a4SAndroid Build Coastguard Worker     pub fn new() -> Self {
27*bb4ee6a4SAndroid Build Coastguard Worker         FACS {
28*bb4ee6a4SAndroid Build Coastguard Worker             signature: *b"FACS",
29*bb4ee6a4SAndroid Build Coastguard Worker             length: std::mem::size_of::<FACS>() as u32,
30*bb4ee6a4SAndroid Build Coastguard Worker             hardware_signature: 0,
31*bb4ee6a4SAndroid Build Coastguard Worker             waking: 0,
32*bb4ee6a4SAndroid Build Coastguard Worker             lock: 0,
33*bb4ee6a4SAndroid Build Coastguard Worker             flags: 0,
34*bb4ee6a4SAndroid Build Coastguard Worker             x_waking: 0,
35*bb4ee6a4SAndroid Build Coastguard Worker             version: 1,
36*bb4ee6a4SAndroid Build Coastguard Worker             _reserved1: [0; 3],
37*bb4ee6a4SAndroid Build Coastguard Worker             ospm_flags: 0,
38*bb4ee6a4SAndroid Build Coastguard Worker             _reserved2: [0; 24],
39*bb4ee6a4SAndroid Build Coastguard Worker         }
40*bb4ee6a4SAndroid Build Coastguard Worker     }
41*bb4ee6a4SAndroid Build Coastguard Worker 
len() -> usize42*bb4ee6a4SAndroid Build Coastguard Worker     pub fn len() -> usize {
43*bb4ee6a4SAndroid Build Coastguard Worker         std::mem::size_of::<FACS>()
44*bb4ee6a4SAndroid Build Coastguard Worker     }
45*bb4ee6a4SAndroid Build Coastguard Worker }
46