diff options
Diffstat (limited to 'sof_sys/src/bindings.rs')
-rw-r--r-- | sof_sys/src/bindings.rs | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/sof_sys/src/bindings.rs b/sof_sys/src/bindings.rs new file mode 100644 index 00000000..7bed0dcf --- /dev/null +++ b/sof_sys/src/bindings.rs @@ -0,0 +1,154 @@ +// Copyright 2020 The Chromium OS Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +/* + * generated from files in sound-open-firmware-private/src/include: + * kernel/header.h + * ipc/control.h + */ + +/* automatically generated by rust-bindgen */ + +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>); +impl<T> __IncompleteArrayField<T> { + #[inline] + pub fn new() -> Self { + __IncompleteArrayField(::std::marker::PhantomData) + } + #[inline] + pub unsafe fn as_ptr(&self) -> *const T { + ::std::mem::transmute(self) + } + #[inline] + pub unsafe fn as_mut_ptr(&mut self) -> *mut T { + ::std::mem::transmute(self) + } + #[inline] + pub unsafe fn as_slice(&self, len: usize) -> &[T] { + ::std::slice::from_raw_parts(self.as_ptr(), len) + } + #[inline] + pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { + ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) + } +} +impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> { + fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + fmt.write_str("__IncompleteArrayField") + } +} +impl<T> ::std::clone::Clone for __IncompleteArrayField<T> { + #[inline] + fn clone(&self) -> Self { + Self::new() + } +} +impl<T> ::std::marker::Copy for __IncompleteArrayField<T> {} +pub type __uint32_t = ::std::os::raw::c_uint; +/// \brief Header for all non IPC ABI data. +/// +/// Identifies data type, size and ABI. +/// Data header used for all component data structures and binary blobs sent to +/// firmware as runtime data. This data is typically sent by userspace +/// applications and tunnelled through any OS kernel (via binary kcontrol on +/// Linux) to the firmware. +#[repr(C, packed)] +pub struct sof_abi_hdr { + ///< 'S', 'O', 'F', '\0' + pub magic: u32, + ///< component specific type + pub type_: u32, + ///< size in bytes of data excl. this struct + pub size: u32, + ///< SOF ABI version + pub abi: u32, + ///< reserved for future use + pub reserved: [u32; 4usize], + ///< Component data - opaque to core + pub data: __IncompleteArrayField<u32>, +} +#[test] +fn bindgen_test_layout_sof_abi_hdr() { + assert_eq!( + ::std::mem::size_of::<sof_abi_hdr>(), + 32usize, + concat!("Size of: ", stringify!(sof_abi_hdr)) + ); + assert_eq!( + ::std::mem::align_of::<sof_abi_hdr>(), + 1usize, + concat!("Alignment of ", stringify!(sof_abi_hdr)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<sof_abi_hdr>())).magic as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sof_abi_hdr), + "::", + stringify!(magic) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<sof_abi_hdr>())).type_ as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(sof_abi_hdr), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<sof_abi_hdr>())).size as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sof_abi_hdr), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<sof_abi_hdr>())).abi as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(sof_abi_hdr), + "::", + stringify!(abi) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<sof_abi_hdr>())).reserved as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sof_abi_hdr), + "::", + stringify!(reserved) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<sof_abi_hdr>())).data as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sof_abi_hdr), + "::", + stringify!(data) + ) + ); +} +///< maps to ALSA volume style controls +pub const sof_ipc_ctrl_cmd_SOF_CTRL_CMD_VOLUME: sof_ipc_ctrl_cmd = 0; +///< maps to ALSA enum style controls +pub const sof_ipc_ctrl_cmd_SOF_CTRL_CMD_ENUM: sof_ipc_ctrl_cmd = 1; +///< maps to ALSA switch style controls +pub const sof_ipc_ctrl_cmd_SOF_CTRL_CMD_SWITCH: sof_ipc_ctrl_cmd = 2; +///< maps to ALSA binary style controls +pub const sof_ipc_ctrl_cmd_SOF_CTRL_CMD_BINARY: sof_ipc_ctrl_cmd = 3; +/// Control command type. +pub type sof_ipc_ctrl_cmd = u32; |