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