da14682_pac/
trng.rs

1/*
2DISCLAIMER
3This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.
4No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
5applicable laws, including copyright laws.
6THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED
7OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
8NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY
9LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,
10INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR
11ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
12Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability
13of this software. By using this software, you agree to the additional terms and conditions found by accessing the
14following link:
15http://www.renesas.com/disclaimer
16
17*/
18// Generated from SVD 1.2, with svd2pac 0.6.0 on Thu, 24 Jul 2025 04:45:10 +0000
19
20#![allow(clippy::identity_op)]
21#![allow(clippy::module_inception)]
22#![allow(clippy::derivable_impls)]
23#[allow(unused_imports)]
24use crate::common::sealed;
25#[allow(unused_imports)]
26use crate::common::*;
27#[doc = r"TRNG registers"]
28unsafe impl ::core::marker::Send for super::Trng {}
29unsafe impl ::core::marker::Sync for super::Trng {}
30impl super::Trng {
31    #[allow(unused)]
32    #[inline(always)]
33    pub(crate) const fn _svd2pac_as_ptr(&self) -> *mut u8 {
34        self.ptr
35    }
36
37    #[doc = "TRNG control register"]
38    #[inline(always)]
39    pub const fn trng_ctrl_reg(
40        &self,
41    ) -> &'static crate::common::Reg<self::TrngCtrlReg_SPEC, crate::common::RW> {
42        unsafe {
43            crate::common::Reg::<self::TrngCtrlReg_SPEC, crate::common::RW>::from_ptr(
44                self._svd2pac_as_ptr().add(0usize),
45            )
46        }
47    }
48
49    #[doc = "TRNG FIFO level register"]
50    #[inline(always)]
51    pub const fn trng_fifolvl_reg(
52        &self,
53    ) -> &'static crate::common::Reg<self::TrngFifolvlReg_SPEC, crate::common::RW> {
54        unsafe {
55            crate::common::Reg::<self::TrngFifolvlReg_SPEC, crate::common::RW>::from_ptr(
56                self._svd2pac_as_ptr().add(4usize),
57            )
58        }
59    }
60
61    #[doc = "TRNG Version register"]
62    #[inline(always)]
63    pub const fn trng_ver_reg(
64        &self,
65    ) -> &'static crate::common::Reg<self::TrngVerReg_SPEC, crate::common::RW> {
66        unsafe {
67            crate::common::Reg::<self::TrngVerReg_SPEC, crate::common::RW>::from_ptr(
68                self._svd2pac_as_ptr().add(8usize),
69            )
70        }
71    }
72}
73#[doc(hidden)]
74#[derive(Copy, Clone, Eq, PartialEq)]
75pub struct TrngCtrlReg_SPEC;
76impl crate::sealed::RegSpec for TrngCtrlReg_SPEC {
77    type DataType = u32;
78}
79
80#[doc = "TRNG control register"]
81pub type TrngCtrlReg = crate::RegValueT<TrngCtrlReg_SPEC>;
82
83impl TrngCtrlReg {
84    #[doc = "0: select the TRNG with asynchronous free running oscillators (default)\n1: select the pseudo-random generator with synchronous oscillators (for simulation purpose only)"]
85    #[inline(always)]
86    pub fn trng_mode(
87        self,
88    ) -> crate::common::RegisterFieldBool<1, 1, 0, TrngCtrlReg_SPEC, crate::common::RW> {
89        crate::common::RegisterFieldBool::<1,1,0,TrngCtrlReg_SPEC,crate::common::RW>::from_register(self,0)
90    }
91
92    #[doc = "0: Disable the TRNG\n1: Enable the TRNG this signal is ignored when the FIFO is full"]
93    #[inline(always)]
94    pub fn trng_enable(
95        self,
96    ) -> crate::common::RegisterFieldBool<0, 1, 0, TrngCtrlReg_SPEC, crate::common::RW> {
97        crate::common::RegisterFieldBool::<0,1,0,TrngCtrlReg_SPEC,crate::common::RW>::from_register(self,0)
98    }
99}
100impl ::core::default::Default for TrngCtrlReg {
101    #[inline(always)]
102    fn default() -> TrngCtrlReg {
103        <crate::RegValueT<TrngCtrlReg_SPEC> as RegisterValue<_>>::new(0)
104    }
105}
106
107#[doc(hidden)]
108#[derive(Copy, Clone, Eq, PartialEq)]
109pub struct TrngFifolvlReg_SPEC;
110impl crate::sealed::RegSpec for TrngFifolvlReg_SPEC {
111    type DataType = u32;
112}
113
114#[doc = "TRNG FIFO level register"]
115pub type TrngFifolvlReg = crate::RegValueT<TrngFifolvlReg_SPEC>;
116
117impl TrngFifolvlReg {
118    #[doc = "1:FIFO full indication. This bit is cleared if the FIFO is read."]
119    #[inline(always)]
120    pub fn trng_fifofull(
121        self,
122    ) -> crate::common::RegisterFieldBool<5, 1, 0, TrngFifolvlReg_SPEC, crate::common::R> {
123        crate::common::RegisterFieldBool::<5,1,0,TrngFifolvlReg_SPEC,crate::common::R>::from_register(self,0)
124    }
125
126    #[doc = "Number of 32 bit words of random data in the FIFO (max 31) until the FIFO is full. When it is 0 and TRNG_FIFOFULL is 1, it means the FIFO is full."]
127    #[inline(always)]
128    pub fn trng_fifolvl(
129        self,
130    ) -> crate::common::RegisterField<0, 0x1f, 1, 0, u8, u8, TrngFifolvlReg_SPEC, crate::common::R>
131    {
132        crate::common::RegisterField::<0,0x1f,1,0,u8,u8,TrngFifolvlReg_SPEC,crate::common::R>::from_register(self,0)
133    }
134}
135impl ::core::default::Default for TrngFifolvlReg {
136    #[inline(always)]
137    fn default() -> TrngFifolvlReg {
138        <crate::RegValueT<TrngFifolvlReg_SPEC> as RegisterValue<_>>::new(0)
139    }
140}
141
142#[doc(hidden)]
143#[derive(Copy, Clone, Eq, PartialEq)]
144pub struct TrngVerReg_SPEC;
145impl crate::sealed::RegSpec for TrngVerReg_SPEC {
146    type DataType = u32;
147}
148
149#[doc = "TRNG Version register"]
150pub type TrngVerReg = crate::RegValueT<TrngVerReg_SPEC>;
151
152impl TrngVerReg {
153    #[doc = "Major version number"]
154    #[inline(always)]
155    pub fn trng_maj(
156        self,
157    ) -> crate::common::RegisterField<24, 0xff, 1, 0, u8, u8, TrngVerReg_SPEC, crate::common::R>
158    {
159        crate::common::RegisterField::<24,0xff,1,0,u8,u8,TrngVerReg_SPEC,crate::common::R>::from_register(self,0)
160    }
161
162    #[doc = "Minor version number"]
163    #[inline(always)]
164    pub fn trng_min(
165        self,
166    ) -> crate::common::RegisterField<16, 0xff, 1, 0, u8, u8, TrngVerReg_SPEC, crate::common::R>
167    {
168        crate::common::RegisterField::<16,0xff,1,0,u8,u8,TrngVerReg_SPEC,crate::common::R>::from_register(self,0)
169    }
170
171    #[doc = "SVN revision number"]
172    #[inline(always)]
173    pub fn trng_svn(
174        self,
175    ) -> crate::common::RegisterField<0, 0xffff, 1, 0, u16, u16, TrngVerReg_SPEC, crate::common::R>
176    {
177        crate::common::RegisterField::<0,0xffff,1,0,u16,u16,TrngVerReg_SPEC,crate::common::R>::from_register(self,0)
178    }
179}
180impl ::core::default::Default for TrngVerReg {
181    #[inline(always)]
182    fn default() -> TrngVerReg {
183        <crate::RegValueT<TrngVerReg_SPEC> as RegisterValue<_>>::new(259)
184    }
185}