/*
(c) (2016-2024), Cypress Semiconductor Corporation (an Infineon company)
or an affiliate of Cypress Semiconductor Corporation.
SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Generated from SVD 1.0, with svd2pac 0.6.0 on Tue, 27 May 2025 19:21:54 +0000
#![allow(clippy::identity_op)]
#![allow(clippy::module_inception)]
#![allow(clippy::derivable_impls)]
#[allow(unused_imports)]
use crate::common::sealed;
#[allow(unused_imports)]
use crate::common::*;
#[doc = r"IPC"]
unsafe impl ::core::marker::Send for super::Ipc {}
unsafe impl ::core::marker::Sync for super::Ipc {}
impl super::Ipc {
#[allow(unused)]
#[inline(always)]
pub(crate) const fn _svd2pac_as_ptr(&self) -> *mut u8 {
self.ptr
}
#[doc = "IPC structure"]
#[inline(always)]
pub fn r#struct(
self,
) -> &'static crate::common::ClusterRegisterArray<crate::ipc::_Struct, 16, 0x20> {
unsafe {
crate::common::ClusterRegisterArray::from_ptr(self._svd2pac_as_ptr().add(0x0usize))
}
}
#[doc = "IPC interrupt structure"]
#[inline(always)]
pub fn intr_struct(
self,
) -> &'static crate::common::ClusterRegisterArray<crate::ipc::_IntrStruct, 16, 0x20> {
unsafe {
crate::common::ClusterRegisterArray::from_ptr(self._svd2pac_as_ptr().add(0x1000usize))
}
}
}
#[doc = "IPC structure"]
#[non_exhaustive]
pub struct _Struct;
#[doc = "IPC structure"]
pub type Struct = &'static _Struct;
unsafe impl ::core::marker::Sync for _Struct {}
impl _Struct {
#[allow(unused)]
#[inline(always)]
pub(crate) const unsafe fn _svd2pac_from_ptr(ptr: *mut u8) -> &'static Self {
&*(ptr as *const _)
}
#[allow(unused)]
#[inline(always)]
pub(crate) const fn _svd2pac_as_ptr(&self) -> *mut u8 {
self as *const Self as *mut u8
}
#[doc = "IPC acquire"]
#[inline(always)]
pub const fn acquire(
&self,
) -> &'static crate::common::Reg<r#struct::Acquire_SPEC, crate::common::R> {
unsafe {
crate::common::Reg::<r#struct::Acquire_SPEC, crate::common::R>::from_ptr(
self._svd2pac_as_ptr().add(0usize),
)
}
}
#[doc = "IPC release"]
#[inline(always)]
pub const fn release(
&self,
) -> &'static crate::common::Reg<r#struct::Release_SPEC, crate::common::W> {
unsafe {
crate::common::Reg::<r#struct::Release_SPEC, crate::common::W>::from_ptr(
self._svd2pac_as_ptr().add(4usize),
)
}
}
#[doc = "IPC notification"]
#[inline(always)]
pub const fn notify(
&self,
) -> &'static crate::common::Reg<r#struct::Notify_SPEC, crate::common::W> {
unsafe {
crate::common::Reg::<r#struct::Notify_SPEC, crate::common::W>::from_ptr(
self._svd2pac_as_ptr().add(8usize),
)
}
}
#[doc = "IPC data"]
#[inline(always)]
pub const fn data(
&self,
) -> &'static crate::common::Reg<r#struct::Data_SPEC, crate::common::RW> {
unsafe {
crate::common::Reg::<r#struct::Data_SPEC, crate::common::RW>::from_ptr(
self._svd2pac_as_ptr().add(12usize),
)
}
}
#[doc = "IPC lock status"]
#[inline(always)]
pub const fn lock_status(
&self,
) -> &'static crate::common::Reg<r#struct::LockStatus_SPEC, crate::common::R> {
unsafe {
crate::common::Reg::<r#struct::LockStatus_SPEC, crate::common::R>::from_ptr(
self._svd2pac_as_ptr().add(16usize),
)
}
}
}
pub mod r#struct {
#[allow(unused_imports)]
use crate::common::*;
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Acquire_SPEC;
impl crate::sealed::RegSpec for Acquire_SPEC {
type DataType = u32;
}
#[doc = "IPC acquire"]
pub type Acquire = crate::RegValueT<Acquire_SPEC>;
impl Acquire {
#[doc = "User/privileged access control:\n\'0\': user mode.\n\'1\': privileged mode.\n\nThis field is set with the user/privileged access control of the access that successfully acquired the lock."]
#[inline(always)]
pub fn p(
self,
) -> crate::common::RegisterFieldBool<0, 1, 0, Acquire_SPEC, crate::common::R> {
crate::common::RegisterFieldBool::<0,1,0,Acquire_SPEC,crate::common::R>::from_register(self,0)
}
#[doc = "Secure/on-secure access control:\n\'0\': secure.\n\'1\': non-secure.\n\nThis field is set with the secure/non-secure access control of the access that successfully acquired the lock."]
#[inline(always)]
pub fn ns(
self,
) -> crate::common::RegisterFieldBool<1, 1, 0, Acquire_SPEC, crate::common::R> {
crate::common::RegisterFieldBool::<1,1,0,Acquire_SPEC,crate::common::R>::from_register(self,0)
}
#[doc = "This field specifies the protection context that successfully acquired the lock."]
#[inline(always)]
pub fn pc(
self,
) -> crate::common::RegisterField<4, 0xf, 1, 0, u8, u8, Acquire_SPEC, crate::common::R>
{
crate::common::RegisterField::<4,0xf,1,0,u8,u8,Acquire_SPEC,crate::common::R>::from_register(self,0)
}
#[doc = "This field specifies the bus master identifier that successfully acquired the lock."]
#[inline(always)]
pub fn ms(
self,
) -> crate::common::RegisterField<8, 0xf, 1, 0, u8, u8, Acquire_SPEC, crate::common::R>
{
crate::common::RegisterField::<8,0xf,1,0,u8,u8,Acquire_SPEC,crate::common::R>::from_register(self,0)
}
#[doc = "Specifies if the lock is successfully acquired or not (reading the ACQUIRE register can have affect on SUCCESS and LOCK_STATUS.ACQUIRED):\n\'0\': Not successfully acquired; i.e. the lock was already acquired by another read transaction and not released. The P, NS, PC and MS fields reflect the access attributes of the transaction that previously successfully acuired the lock; the fields are NOT affected by the current access.\n\'1\': Successfully acquired. The P, NS, PC and MS fields reflect the access attributes of the current access.\n\nNote that this field is NOT SW writable. A lock is released by writing to the associated RELEASE register (irrespective of the write value)."]
#[inline(always)]
pub fn success(
self,
) -> crate::common::RegisterFieldBool<31, 1, 0, Acquire_SPEC, crate::common::R> {
crate::common::RegisterFieldBool::<31,1,0,Acquire_SPEC,crate::common::R>::from_register(self,0)
}
}
impl ::core::default::Default for Acquire {
#[inline(always)]
fn default() -> Acquire {
<crate::RegValueT<Acquire_SPEC> as RegisterValue<_>>::new(0)
}
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Release_SPEC;
impl crate::sealed::RegSpec for Release_SPEC {
type DataType = u32;
}
#[doc = "IPC release"]
pub type Release = crate::RegValueT<Release_SPEC>;
impl Release {
#[doc = "This field allows for the generation of release events to the IPC interrupt structures, but only when the lock is acquired (LOCK_STATUS.ACQUIRED is \'1\'). The IPC release cause fields associated with this IPC structure are set to \'1\', but only for those IPC interrupt structures for which the corresponding bit field in INTR_RELEASE\\[\\] is set to \'1\'.\n\nSW writes a \'1\' to the bit fields to generate a release event. Due to the transient nature of this event, SW always reads a \'0\' from this field.\n\nAs a side effect, a write to this register will always set LOCK_STATUS.ACQUIRED to \'0\' (even when no release event is generated; i.e. the written data is \'0\')."]
#[inline(always)]
pub fn intr_release(
self,
) -> crate::common::RegisterField<0, 0xffff, 1, 0, u16, u16, Release_SPEC, crate::common::W>
{
crate::common::RegisterField::<0,0xffff,1,0,u16,u16,Release_SPEC,crate::common::W>::from_register(self,0)
}
}
impl ::core::default::Default for Release {
#[inline(always)]
fn default() -> Release {
<crate::RegValueT<Release_SPEC> as RegisterValue<_>>::new(0)
}
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Notify_SPEC;
impl crate::sealed::RegSpec for Notify_SPEC {
type DataType = u32;
}
#[doc = "IPC notification"]
pub type Notify = crate::RegValueT<Notify_SPEC>;
impl Notify {
#[doc = "This field allows for the generation of notification events to the IPC interrupt structures. The IPC notification cause fields associated with this IPC structure are set to \'1\', but only for those IPC interrupt structures for which the corresponding bit field in INTR_NOTIFY\\[\\] is set to \'1\'. \n\nSW writes a \'1\' to the bit fields to generate a notify event. Due to the transient nature of this event, SW always reads a \'0\' from this field."]
#[inline(always)]
pub fn intr_notify(
self,
) -> crate::common::RegisterField<0, 0xffff, 1, 0, u16, u16, Notify_SPEC, crate::common::W>
{
crate::common::RegisterField::<0,0xffff,1,0,u16,u16,Notify_SPEC,crate::common::W>::from_register(self,0)
}
}
impl ::core::default::Default for Notify {
#[inline(always)]
fn default() -> Notify {
<crate::RegValueT<Notify_SPEC> as RegisterValue<_>>::new(0)
}
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Data_SPEC;
impl crate::sealed::RegSpec for Data_SPEC {
type DataType = u32;
}
#[doc = "IPC data"]
pub type Data = crate::RegValueT<Data_SPEC>;
impl Data {
#[doc = "This field holds a 32-bit data element that is associated with the IPC structure."]
#[inline(always)]
pub fn data(
self,
) -> crate::common::RegisterField<0, 0xffffffff, 1, 0, u32, u32, Data_SPEC, crate::common::RW>
{
crate::common::RegisterField::<
0,
0xffffffff,
1,
0,
u32,
u32,
Data_SPEC,
crate::common::RW,
>::from_register(self, 0)
}
}
impl ::core::default::Default for Data {
#[inline(always)]
fn default() -> Data {
<crate::RegValueT<Data_SPEC> as RegisterValue<_>>::new(0)
}
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct LockStatus_SPEC;
impl crate::sealed::RegSpec for LockStatus_SPEC {
type DataType = u32;
}
#[doc = "IPC lock status"]
pub type LockStatus = crate::RegValueT<LockStatus_SPEC>;
impl LockStatus {
#[doc = "This field specifies the user/privileged access control:\n\'0\': user mode.\n\'1\': privileged mode."]
#[inline(always)]
pub fn p(
self,
) -> crate::common::RegisterFieldBool<0, 1, 0, LockStatus_SPEC, crate::common::R> {
crate::common::RegisterFieldBool::<0,1,0,LockStatus_SPEC,crate::common::R>::from_register(self,0)
}
#[doc = "This field specifies the cecure/on-secure access control:\n\'0\': secure.\n\'1\': non-secure."]
#[inline(always)]
pub fn ns(
self,
) -> crate::common::RegisterFieldBool<1, 1, 0, LockStatus_SPEC, crate::common::R> {
crate::common::RegisterFieldBool::<1,1,0,LockStatus_SPEC,crate::common::R>::from_register(self,0)
}
#[doc = "This field specifies the protection context that successfully acquired the lock."]
#[inline(always)]
pub fn pc(
self,
) -> crate::common::RegisterField<4, 0xf, 1, 0, u8, u8, LockStatus_SPEC, crate::common::R>
{
crate::common::RegisterField::<4,0xf,1,0,u8,u8,LockStatus_SPEC,crate::common::R>::from_register(self,0)
}
#[doc = "This field specifies the bus master identifier that successfully acquired the lock."]
#[inline(always)]
pub fn ms(
self,
) -> crate::common::RegisterField<8, 0xf, 1, 0, u8, u8, LockStatus_SPEC, crate::common::R>
{
crate::common::RegisterField::<8,0xf,1,0,u8,u8,LockStatus_SPEC,crate::common::R>::from_register(self,0)
}
#[doc = "Specifies if the lock is acquired. This field is set to \'1\', if a ACQUIRE read transfer successfully acquires the lock (the ACQUIRE read transfer returns ACQUIRE.SUCCESS as \'1\')."]
#[inline(always)]
pub fn acquired(
self,
) -> crate::common::RegisterFieldBool<31, 1, 0, LockStatus_SPEC, crate::common::R> {
crate::common::RegisterFieldBool::<31,1,0,LockStatus_SPEC,crate::common::R>::from_register(self,0)
}
}
impl ::core::default::Default for LockStatus {
#[inline(always)]
fn default() -> LockStatus {
<crate::RegValueT<LockStatus_SPEC> as RegisterValue<_>>::new(0)
}
}
}
#[doc = "IPC interrupt structure"]
#[non_exhaustive]
pub struct _IntrStruct;
#[doc = "IPC interrupt structure"]
pub type IntrStruct = &'static _IntrStruct;
unsafe impl ::core::marker::Sync for _IntrStruct {}
impl _IntrStruct {
#[allow(unused)]
#[inline(always)]
pub(crate) const unsafe fn _svd2pac_from_ptr(ptr: *mut u8) -> &'static Self {
&*(ptr as *const _)
}
#[allow(unused)]
#[inline(always)]
pub(crate) const fn _svd2pac_as_ptr(&self) -> *mut u8 {
self as *const Self as *mut u8
}
#[doc = "Interrupt"]
#[inline(always)]
pub const fn intr(
&self,
) -> &'static crate::common::Reg<intr_struct::Intr_SPEC, crate::common::RW> {
unsafe {
crate::common::Reg::<intr_struct::Intr_SPEC, crate::common::RW>::from_ptr(
self._svd2pac_as_ptr().add(0usize),
)
}
}
#[doc = "Interrupt set"]
#[inline(always)]
pub const fn intr_set(
&self,
) -> &'static crate::common::Reg<intr_struct::IntrSet_SPEC, crate::common::RW> {
unsafe {
crate::common::Reg::<intr_struct::IntrSet_SPEC, crate::common::RW>::from_ptr(
self._svd2pac_as_ptr().add(4usize),
)
}
}
#[doc = "Interrupt mask"]
#[inline(always)]
pub const fn intr_mask(
&self,
) -> &'static crate::common::Reg<intr_struct::IntrMask_SPEC, crate::common::RW> {
unsafe {
crate::common::Reg::<intr_struct::IntrMask_SPEC, crate::common::RW>::from_ptr(
self._svd2pac_as_ptr().add(8usize),
)
}
}
#[doc = "Interrupt masked"]
#[inline(always)]
pub const fn intr_masked(
&self,
) -> &'static crate::common::Reg<intr_struct::IntrMasked_SPEC, crate::common::R> {
unsafe {
crate::common::Reg::<intr_struct::IntrMasked_SPEC, crate::common::R>::from_ptr(
self._svd2pac_as_ptr().add(12usize),
)
}
}
}
pub mod intr_struct {
#[allow(unused_imports)]
use crate::common::*;
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Intr_SPEC;
impl crate::sealed::RegSpec for Intr_SPEC {
type DataType = u32;
}
#[doc = "Interrupt"]
pub type Intr = crate::RegValueT<Intr_SPEC>;
impl Intr {
#[doc = "These interrupt cause fields are activated (HW sets the field to \'1\') when a IPC release event is detected. One bit field for each master. SW writes a \'1\' to these field to clear the interrupt cause."]
#[inline(always)]
pub fn release(
self,
) -> crate::common::RegisterField<0, 0xffff, 1, 0, u16, u16, Intr_SPEC, crate::common::RW>
{
crate::common::RegisterField::<0,0xffff,1,0,u16,u16,Intr_SPEC,crate::common::RW>::from_register(self,0)
}
#[doc = "These interrupt cause fields are activated (HW sets the field to \'1\') when a IPC notification event is detected. One bit field for each master. SW writes a \'1\' to these field to clear the interrupt cause."]
#[inline(always)]
pub fn notify(
self,
) -> crate::common::RegisterField<16, 0xffff, 1, 0, u16, u16, Intr_SPEC, crate::common::RW>
{
crate::common::RegisterField::<16,0xffff,1,0,u16,u16,Intr_SPEC,crate::common::RW>::from_register(self,0)
}
}
impl ::core::default::Default for Intr {
#[inline(always)]
fn default() -> Intr {
<crate::RegValueT<Intr_SPEC> as RegisterValue<_>>::new(0)
}
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct IntrSet_SPEC;
impl crate::sealed::RegSpec for IntrSet_SPEC {
type DataType = u32;
}
#[doc = "Interrupt set"]
pub type IntrSet = crate::RegValueT<IntrSet_SPEC>;
impl IntrSet {
#[doc = "SW writes a \'1\' to this field to set the corresponding field in the INTR register."]
#[inline(always)]
pub fn release(
self,
) -> crate::common::RegisterField<0, 0xffff, 1, 0, u16, u16, IntrSet_SPEC, crate::common::RW>
{
crate::common::RegisterField::<0,0xffff,1,0,u16,u16,IntrSet_SPEC,crate::common::RW>::from_register(self,0)
}
#[doc = "SW writes a \'1\' to this field to set the corresponding field in the INTR register."]
#[inline(always)]
pub fn notify(
self,
) -> crate::common::RegisterField<16, 0xffff, 1, 0, u16, u16, IntrSet_SPEC, crate::common::RW>
{
crate::common::RegisterField::<
16,
0xffff,
1,
0,
u16,
u16,
IntrSet_SPEC,
crate::common::RW,
>::from_register(self, 0)
}
}
impl ::core::default::Default for IntrSet {
#[inline(always)]
fn default() -> IntrSet {
<crate::RegValueT<IntrSet_SPEC> as RegisterValue<_>>::new(0)
}
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct IntrMask_SPEC;
impl crate::sealed::RegSpec for IntrMask_SPEC {
type DataType = u32;
}
#[doc = "Interrupt mask"]
pub type IntrMask = crate::RegValueT<IntrMask_SPEC>;
impl IntrMask {
#[doc = "Mask bit for corresponding field in the INTR register."]
#[inline(always)]
pub fn release(
self,
) -> crate::common::RegisterField<0, 0xffff, 1, 0, u16, u16, IntrMask_SPEC, crate::common::RW>
{
crate::common::RegisterField::<
0,
0xffff,
1,
0,
u16,
u16,
IntrMask_SPEC,
crate::common::RW,
>::from_register(self, 0)
}
#[doc = "Mask bit for corresponding field in the INTR register."]
#[inline(always)]
pub fn notify(
self,
) -> crate::common::RegisterField<
16,
0xffff,
1,
0,
u16,
u16,
IntrMask_SPEC,
crate::common::RW,
> {
crate::common::RegisterField::<
16,
0xffff,
1,
0,
u16,
u16,
IntrMask_SPEC,
crate::common::RW,
>::from_register(self, 0)
}
}
impl ::core::default::Default for IntrMask {
#[inline(always)]
fn default() -> IntrMask {
<crate::RegValueT<IntrMask_SPEC> as RegisterValue<_>>::new(0)
}
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct IntrMasked_SPEC;
impl crate::sealed::RegSpec for IntrMasked_SPEC {
type DataType = u32;
}
#[doc = "Interrupt masked"]
pub type IntrMasked = crate::RegValueT<IntrMasked_SPEC>;
impl IntrMasked {
#[doc = "Logical and of corresponding request and mask bits."]
#[inline(always)]
pub fn release(
self,
) -> crate::common::RegisterField<
0,
0xffff,
1,
0,
u16,
u16,
IntrMasked_SPEC,
crate::common::R,
> {
crate::common::RegisterField::<
0,
0xffff,
1,
0,
u16,
u16,
IntrMasked_SPEC,
crate::common::R,
>::from_register(self, 0)
}
#[doc = "Logical and of corresponding INTR and INTR_MASK fields."]
#[inline(always)]
pub fn notify(
self,
) -> crate::common::RegisterField<
16,
0xffff,
1,
0,
u16,
u16,
IntrMasked_SPEC,
crate::common::R,
> {
crate::common::RegisterField::<
16,
0xffff,
1,
0,
u16,
u16,
IntrMasked_SPEC,
crate::common::R,
>::from_register(self, 0)
}
}
impl ::core::default::Default for IntrMasked {
#[inline(always)]
fn default() -> IntrMasked {
<crate::RegValueT<IntrMasked_SPEC> as RegisterValue<_>>::new(0)
}
}
}